寻找一个棘手的一行来获取 awk 输出的差异

寻找一个棘手的一行来获取 awk 输出的差异

假设我有两个如下的文件:

file1

a 23
b 34
c 47

file2
a justin_beiber_sucks
b segmentation fault
c jackson
d nop

现在我想要的是获取两个文件第一列的差异。我现在这样做

$cat file1 awk '{print $1}'> f1
$cat file2 awk '{print $1}'> f2
$diff -u f1 f2

但这种方法感觉有点落后。有什么巧妙的方法吗?

问题是我总是将pipes 视为一维事物,但这里它是二维的。我的意思是 diff 的输入必须同时来自两个不同的来源。

起点可能是 awk 脚本将读取两个文件,进行过滤并将结果保存在临时关联数组中,接下来它将调用 diff 并提供其输入。

答案1

尝试:

diff -u <(awk '{print $1}' file-one) <(awk '{print $1}' file-two)

答案2

很有可能它join会做你想做的事:

join <(sort file1) <(sort file2)

但由于您没有说清楚真正想要实现的目标,因此很难确定哪些选项可能是合适的。

相关内容