我正在寻找一个简单的命令行来帮助我完成以下任务。
我有两个文件,我想打印他们在Col2中有共同值的行。
例如,File1类似于以下3列制表符分隔示例
File1中
cat big 24
cat small 13
cat red 63
文件2
dog big 34
chicken plays 39
fish red 294
期望的输出
big
red
我使用comm
语法尝试了命令:comm /path/to/file1/ /path/to/file2
但是,它不会输出任何内容,因为Col1和Col3中的值很少会出现共同点。
有没有人建议如何解决这个问题,或许awk
是一个更好的解决方案?
答案 0 :(得分:1)
如果您阅读comm
的手册页,您会看到它适用于sorted
个文件。但是awk很灵活,你可以控制你想要的东西:
awk 'NR==FNR{a[$2]=1;next}a[$2]{print $2}' file1 file2
答案 1 :(得分:1)
您可以使用paste
和awk
paste file1 file2 | awk '$2 == $5 { print $2 }'
输出:
big
red