比较两个“awk”命令的输出

比较两个“awk”命令的输出

我正在尝试计算两个命令的输出之间的差异,awk但我的简单尝试似乎失败了。这是我正在尝试的:

diff $(awk '{print $3}' f1.txt | sort -u) $(awk '{print $2}' f2.txt | sort -u)

由于我未知的原因,这不起作用。我假设$()构造用于捕获另一个命令的输出,但我的“diff”调用无法识别提供给它的两个输入。有什么办法可以让我完成这项工作吗?

顺便说一句,鉴于我登录到没有“写入”权限的生产设备,我无法使用将这两个命令的输出写入单独文件的明显解决方案。

答案1

diff需要两个文件的名称,因此您应该将两个输出放在两个文件上,然后比较它们:

awk '{print $3}' f1.txt | sort -u > out1
awk '{print $2}' f2.txt | sort -u > out2
diff out1 out2

或者,使用ksh93bashzsh,您可以使用进程替换:

diff <(awk '{print $3}' f1.txt | sort -u) <(awk '{print $2}' f2.txt | sort -u)

相关内容