/ / formatowanie tekstu za pomocą perl - perl

formatowanie tekstu za pomocą perl - perl

Mam tekst na temat tego szablonu:

In 1935 he was asked to document the principal dancers and productions and
George newly .

he continued to shoot fashion
Bergdorf Goodman and Saks Fifth
started a series of photographs .

i chcesz przekonwertować każdy akapit na jedną linię oddzieloną przez "n", tzn. wyjście będzie:

In 1935 he was asked to document the principal dancers and productions George newly .

he continued to shoot fashion Bergdorf Goodman and Saks Fifth started a series of photographs .

jak mogę sformatować takie rzeczy z perl może ktoś podać przykład?

Próbowałem użyć Text :: Wrap jak poniżej, ale otrzymałem niechciane wyniki

$Text::Wrap::separator=" ";
my $text=fill("","",$text);

Odpowiedzi:

2 dla odpowiedzi № 1

Dla jednego liniowca możesz wypróbować coś takiego:

perl -00 -l -pwe "s/n//g" foo/george.txt

-00 ustawi separator rekordów wejściowych $/ do "" i aktywuj tryb akapitu. -l ustawi separator rekordów wyjściowych $ do "nn" (w tym przypadku).

W wersji skryptowej:

$/ = "";
$ = "nn";
while (<>) {
chomp;
s/n//g;
print;
}

2 dla odpowiedzi nr 2

Możesz to zrobić za pomocą Text :: Wrap, ale a) musisz przeczytać plik w akapicie i b) musisz ustawić sztucznie wysoki prawy margines.

#!/usr/bin/perl

use strict;
use warnings;

use Text::Wrap;

$Text::Wrap::columns = 10_000;
local $/ = ""; # Always localise changes to $/

while (<DATA>) {
print fill("", "", $_), "nn";
}

__DATA__
In 1935 he was asked to document the principal dancers and productions and
George newly .

he continued to shoot fashion
Bergdorf Goodman and Saks Fifth
started a series of photographs .

0 dla odpowiedzi № 3
#!/usr/bin/perl
use strict;
use warnings;

$/=""; #lines are paragraphs - perlfaq5
#files are command line args, or STDIN
while(<>){s/n//g; print $_,"nn";}