0

我正在编写一个 Perl 脚本,它将根据国家/地区字段每 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 的新手,需要一些帮助来启发我。谢谢你帮我干杯!

4

2 回答 2

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;
于 2013-03-14T07:23:15.000 回答
0

我试过用这个:

sed -n -e '/JPN/,+2w file1' -e '/JPN/,+2!w file2' yourfile
于 2013-03-14T09:44:11.727 回答