我有一个文件(文件 1),内容如下:
2 test1
3 test2
2 test3
1 test1
4 test2
还有一个主文件(file2):
2 test1
3 test1
4 test1
2 test2
3 test2
4 test2
5 test2
...
当文件 1 的第 1 列和第 2 列匹配时,我想打印文件 2 中的所有行。我想保留文件 2 的随机格式。最好的方法是什么?
答案1
尝试
awk 'NR==FNR { a[$1 $2]=1 ; } NR>FNR { if ( $1 $2 in a ) print ;}'
在哪里
NR==FNR
记录数==文件记录数(我们在第一个文件中){ a[$1 $2]=1 ; }
存储密钥(无空格连接)NR>FNR
(我们在第二个文件中)if ( $1 $2 in a )
如果索引存在...print
打印该行。
哪个给你样品
2 test1
3 test2
4 test2
答案2
awk 'n[$1][$2]++' file1 file2
假设两个文件中都没有重复项。
答案3
perl -lane '@ARGV and $h{"@F"}++,next; print if $h{"@F"}' file1 file2
输出
2 test1
3 test2
4 test2