Andrej Kastrin am Montag, 16. Januar 2006 14.32:
> Hi all,
>
> I have the file, which looks like:
>
> *RECORD*
> *ID*
> 001
> *TITLE*
> Here is title number one.
> *ABSTRACT*
> First sentence of the abstract. Second sentence of the abstract...
> Second line of the abstract.
>
> *RECORD*
> *ID*
> 002
> *TITLE*
> Here is title number one.
> *ABSTRACT*
> First sentence of the abstract. Second sentence of the abstract...
> Second line of the abstract.
>
> Is there any simple way to transform this file to look like:
> *RECORD*
> *ID* 001
> *TITLE* Here is title number one.
> *ABSTRACT* First sentence of the abstract. Second sentence of the
> abstract. Second line of the abstract.
>
> Thanks in advance for any pointers or notes.
>
> Cheers, Andre

The following does what you want in a somehow generic way (except from the 
additional empty line at the very end), but it is more short than simple, and 
there must exist an easier regex I have not found:

use strict; use warnings;
local $/="";
while(<DATA>) {
  s/((?<=\*)|(?<!\*))\n(?!\*|$)/ /gms;
  print;
}
__DATA__
*RECORD*
*ID*
001
*TITLE*
Here is title number one.
*ABSTRACT*
First sentence of the abstract. Second sentence of the abstract...
Second line of the abstract.

*RECORD*
*ID*
002
*TITLE*
Here is title number one.
*ABSTRACT*
First sentence of the abstract. Second sentence of the abstract...
Second line of the abstract.

### prints:

*RECORD*
*ID* 001
*TITLE* Here is title number one.
*ABSTRACT* First sentence of the abstract. Second sentence of the abstract... 
Second line of the abstract.

*RECORD*
*ID* 002
*TITLE* Here is title number one.
*ABSTRACT* First sentence of the abstract. Second sentence of the abstract... 
Second line of the abstract.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to