0

我正在寻找一个简单的命令行来帮助我完成以下任务。

我有两个文件,我想打印它们在 Col2 中具有共同值的行。

例如 File1 类似于以下 3 列制表符分隔的示例

文件 1

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是一个更好的解决方案?

4

2 回答 2

1

如果您阅读 的手册页comm,您将看到它适用于sorted文件。但是 awk 很灵活,你可以控制你想要的:

 awk 'NR==FNR{a[$2]=1;next}a[$2]{print $2}' file1 file2
于 2014-01-27T12:30:56.747 回答
1

您可以使用pasteand一次性完成awk

paste file1 file2 | awk '$2 == $5 { print $2 }'

输出:

big
red
于 2014-01-27T12:33:46.893 回答