Мои строки
Line: foobar, foo Line: webar, webar, we Line: abcabc abc Line: xyzxyz xyz
Я хочу объединить их в одну строку:
Line: foobar, foo Line: webar, webar, we Line: abcabc, abc Line: xyzxyz, xyz
Один из способов - прочитать весь файл и разделить его на \nLine:, а затем выполнить некоторые исправления данных.
\nLine:
use strict; use warnings; use Data::Dumper; my $data = <<EOF; Line: foobar, foo Line: quxbar, quxbar, quxx Line: abcabc abc EOF $data =~ s/^Line: //; my @lines = split("\nLine: ", $data); s/\n/, /g for @lines; print join "\n", map { "Line: $_" } @lines;
script.pl :
#!/usr/bin/perl -w my @lines; while(<>) { chomp; if(m/^Line: /) { push @lines, $_; } else { if(length $lines[-1] == 6) { $lines[-1] .= $_; } else { $lines[-1] .= ", $_"; } } } print "$_\n" for @lines;
Сохраните пример ввода как файл file и запустите
cat file | perl script.pl