Perl 根据另一个文件中的列筛选文件中的条目
是否有一种方法可以根据另一个文件中的条目筛选文件中的条目?最好使用unix 例如,文件1和2有50个条目行和10列。基于最后5列,我只想在file1中使用唯一的条目。i、 e.根据最后5列,条目存在于文件1中,但不存在于文件2中Perl 根据另一个文件中的列筛选文件中的条目,perl,unix,awk,filter,rows,Perl,Unix,Awk,Filter,Rows,是否有一种方法可以根据另一个文件中的条目筛选文件中的条目?最好使用unix 例如,文件1和2有50个条目行和10列。基于最后5列,我只想在file1中使用唯一的条目。i、 e.根据最后5列,条目存在于文件1中,但不存在于文件2中 我尝试了diff,但它似乎只适用于1列条目。这个Perl脚本似乎满足了您的要求 它使用每个记录中的最后五个字段作为键,从file2构建一个散列,然后对file1执行相同的操作,如果file2包含相同的键,则打印该记录 use strict; use warnings;
我尝试了diff,但它似乎只适用于1列条目。这个Perl脚本似乎满足了您的要求 它使用每个记录中的最后五个字段作为键,从file2构建一个散列,然后对file1执行相同的操作,如果file2包含相同的键,则打印该记录
use strict;
use warnings;
use autodie;
my %file2;
open my $fh, '<', 'file2.txt';
while (<$fh>) {
next unless /\S/;
my @fields = split;
my @key = @fields[-5..-1];
++$file2{"@key"};
}
open $fh, '<', 'file1.txt';
while (<$fh>) {
if (/\S/) {
my @fields = split;
my @key = @fields[-5..-1];
print unless $file2{"@key"};
}
else {
print;
}
}
close $fh;
例如,很有可能使用grep或awk。为此,我们需要一些样本输入和期望的输出。