【发布时间】:2015-01-21 03:41:51
【问题描述】:
我正在使用两个文本文件 sampleA.txt 和 sampleB.txt。我在每个文件中有两个字段,我需要将 sampleA.txt 的第一条记录(第一行)与 sampleB.txt 的第一行进行比较,我想显示匹配记录以及在命令提示符下错过匹配记录。我需要在 Perl 中执行此操作。
使用下面的脚本,我得到了一个输出,但它是错误的。我需要填充匹配和不匹配。该怎么做?
sampleA.txt:
1|X
2|A
4|Z
5|A
sampleB.txt:
2|A
2|X
3|B
4|C
我得到的输出:
2|A
2|X
4|C
我想要的输出:
匹配输出:
2|A
未匹配输出:
1|X
4|Z
5|A
3|B
4|C
Perl 脚本:
#!/usr/bin/perl
use strict;
use warnings;
open(FILE1,'C:\Users\sathiya.kumar\Desktop\sampleA.txt') || die $!;
open(FILE2,'C:\Users\sathiya.kumar\Desktop\sampleB.txt') || die $!;
my $interline;
while (my $line= <FILE1>) {
my @fields = split('\|',$line);
parser($fields[0]);
}
sub parser {
my $mergeid = shift;
while (defined $interline || ($interline= <FILE2>)) {
my @fields = split('\|',$interline);
my $key = $fields[0];
if ($key lt $mergeid) {
# Skip non-matching records
$interline = undef;
next;
} elsif ($key gt $mergeid) {
# wait for next key
last;
} else {
print $interline;
$interline = undef;
}
}
}
close(FILE1);
close(FILE2);
如果您需要更多信息,请告诉我。
【问题讨论】:
标签: perl