![如果两个列值都出现在单独文件的单个列中,则提取行](https://linux22.com/image/108657/%E5%A6%82%E6%9E%9C%E4%B8%A4%E4%B8%AA%E5%88%97%E5%80%BC%E9%83%BD%E5%87%BA%E7%8E%B0%E5%9C%A8%E5%8D%95%E7%8B%AC%E6%96%87%E4%BB%B6%E7%9A%84%E5%8D%95%E4%B8%AA%E5%88%97%E4%B8%AD%EF%BC%8C%E5%88%99%E6%8F%90%E5%8F%96%E8%A1%8C.png)
我有两个制表符分隔的文件:
文件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