Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 根据另一个文件中的列筛选文件中的条目_Perl_Unix_Awk_Filter_Rows - Fatal编程技术网

Perl 根据另一个文件中的列筛选文件中的条目

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;

是否有一种方法可以根据另一个文件中的条目筛选文件中的条目?最好使用unix

例如,文件1和2有50个条目行和10列。基于最后5列,我只想在file1中使用唯一的条目。i、 e.根据最后5列,条目存在于文件1中,但不存在于文件2中


我尝试了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。为此,我们需要一些样本输入和期望的输出。