如果两个列值都出现在单独文件的单个列中,则提取行

如果两个列值都出现在单独文件的单个列中,则提取行

我有两个制表符分隔的文件:

文件1

123   456
135   567
234   478

文件2

123    notimportant    notimportant2
456    notimportant    notimportant2
987    notimportant    notimportant2
135    notimportant    notimportant2
234    notimportant    notimportant2
478    notimportant    notimportant2

如果单行中的两个条目都存在于 file2 的第一列中,我需要从 file1 中提取行。所以输出文件应该是这样的:

输出

123   456
234   478

如果只有 file1 的第一列与 file2 的第一列匹配,我之前使用此 awk 命令来提取行

awk 'FNR==NR{a[$1];next}($1 in a){print}' file2 file1

但我不知道如何扩展它。

答案1

awk 'FNR==NR{a[$1]++;next;}($1 in a)&&($2 in a){print}' file2 file1

perl -lane '
   @ARGV and $h{$F[0]}++,next;
   print if @F == grep { $h{$_} } @F;
' file2 file1

相关内容