> On Tue, Jan 19, 2010 at 08:12:25AM -0500, Perl Noob wrote:
>> > 在 2010-01-19二的 00:09 -0500,Perl Noob写道:
>> >> I have a data file with thousands of records.  The problem is
>> that
>> >> the
>> >> records in the data file span two lines for each record.  I want
>> to
>> >> write a perl script that makes each record a single line.  The
>> file
>> >> looks like this:
>> >>
>> >
>> > HI,
>> >
>> > If you are using a regex, then may want to try the /m option.
>> > see perldoc perlre for details.
>> > I give the code below, it could work for me.
>> >
>> >
>> > use strict;
>> >
>> > local $/="RECORD1FIELD5\n";
>> >
>> > while(<DATA>) {
>> >     my @fields = /\w+/gm;
>> >     print "@fields\n";
>> > }
>> >
>> >
>> > __DATA__
>> > RECORD1FIELD1  RECORD1FIELD2     RECORD1FIELD3  RECORD1FIELD3
>> >           RECORD1FIELD4          RECORD1FIELD5
>> >
>> > RECORD2FIELD1  RECORD2FIELD2     RECORD2FIELD3  RECORD2FIELD3
>> >           RECORD2FIELD4          RECORD2FIELD5
>> >
>> >
>>
>> Your example works if RECORD1FIELD5 is a constant value and is the
>> same as RECORD2FIELD5, it is not.  RECORD1FIELD5 is different from
>> RECORD2FIELD5 which will be different from RECORD3FIELD5.  There is
>> the problem.  I need to find a way to delete the \n at the end of
>> the
>> first line of the record, but maintain the \n on the second line of
>> the record.
>>
>> That way each record will be on a single line instead of spanning
>> two
>> lines.
>
> Something like this will probably do what you want:
>
>   $ perl -00pe 's/\n/ / < input > output
>
> or you may prefer:
>
>   $ perl -00pe 's/\s+/ /g; s/ $/\n/' < input > output
>
> The key here is -00 which sets the IRS to paragraph mode ($/ = "")-
> See
> perldoc perlrun and perldoc perlvar.
>
> --
> Paul Johnson - p...@pjcj.net
> http://www.pjcj.net


I really don't know the -00 very well, but my understanding is that it
expects a blank line after the record.  My file does not have a blank
line, all of the lines are consecutive, but each record consists of
two lines.

I am going to try this suggestion and will let you know.

Thank you very much for the input and guidance.




-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to