我正在编写一个Perl脚本,它将根据country字段提取每3行并将其分成2个文本文件。 数据看起来像这样:
INVHDR|JPN|
INVDET|4254|
INVTOT|3325|
INVHDR|AUS|
INVDET|9685|
INVTOT|1431|
INVHDR|JPN|
INVDET|3368|
INVTOT|1126|
INVHDR|NZL|
INVDET|1458|
INVTOT|5698|
所有等于JPN的字段2将连接在一起 输出应该是文本文件1
INVHDR|JPN|
INVDET|4254|
INVTOT|3325|
INVHDR|JPN|
INVDET|3368|
INVTOT|1126|
以及没有JPN将把另一个文本文件放在一起 对于其他输出应该是文本文件2
INVHDR|AUS|
INVDET|9685|
INVTOT|1431|
INVHDR|NZL|
INVDET|1458|
INVTOT|5698|
我刚认为是perl的新手,需要一些自我来帮助我。 谢谢你的协助 干杯!
答案 0 :(得分:1)
试试这个:
use strict;
use warnings;
open my $output1, '>output1.txt'
or die "Can't open output1.txt for writing: $!\n";
open my $output2, '>output2.txt'
or die "Can't open output2.txt for writing: $!\n";
my @data = <>;
for (my $i = 0; $i < @data; $i += 3) {
my $result = join q{}, @data[$i..$i+2];
my $output = $data[$i] =~ /JPN\|$/ ? $output1 : $output2;
print $output $result;
}
close $output1;
close $output2;
答案 1 :(得分:0)
我试过这个:
sed -n -e '/JPN/,+2w file1' -e '/JPN/,+2!w file2' yourfile