我有一个包含以下内容的文本文件:
1234 ^Y DATA ^Y DATA
1235 ^Y DATA ^Y DATA
1236 ^Y DATA ^Y DATA
/text text
/more text
1237 ^Y DATA ^Y DATA
第4行和第5行属于第3行的末尾,但它们在文本文件中写为换行符。如果不遵守NUMBER ^ Y,有没有办法追加前一行,并在发生这种情况时添加一组特定的字符?
在这种情况下,^ Y是字段分隔符。
use strict;
use warnings;
my @out;
while (my $line = <DATA>) {
chomp $line;
# regex to check for NUMBER ^Y;
if ($line =~ /^\d+\s+\^Y/) {
push @out, $line;
} else {
# append to the last element of the array
$out[-1] .= ' *chars to add* '.$line;
}
}
print $_."\n" for @out;
__DATA__
1234 ^Y DATA ^Y DATA
1235 ^Y DATA ^Y DATA
1236 ^Y DATA ^Y DATA
/text text
/more text
1237 ^Y DATA ^Y DATA
awk
救援!
$ awk '{if(/\^Y/){if(p) print p; p=$0} else p=p $0}
END{print p}' file
1234 ^Y DATA ^Y DATA
1235 ^Y DATA ^Y DATA
1236 ^Y DATA ^Y DATA/text text/more text
1237 ^Y DATA ^Y DATA