【问题标题】:How can I compare the output of two unix commands to find the difference?如何比较两个 unix 命令的输出以找出差异?
【发布时间】:2011-05-06 03:48:07
【问题描述】:

我不想创建新文件。我想完成类似的事情:

cmd1 > a
cmd2 > b
cat a b b | sort | uniq -u

但不使用文件 a 和 b。

【问题讨论】:

标签: unix


【解决方案1】:

Unix 实用程序通常是面向文件的,所以没有什么能完全满足您的需求。

但是,zsh 可以使用以下语法自动创建临时文件:

diff =(cmd1) =(cmd2)

它还可以创建临时命名管道(或使用特殊文件/dev/fdn 引用匿名管道)

diff <(cmd1) <(cmd2)

但是,许多diffs 在他们的输入中调用lseek(),因此不适用于命名管道。

diff 通常是一个比上面的管道比较非常相似的输出更有用的命令。)

有关详细信息,请参阅“zshexpn”手册页的“进程替换”部分。

【讨论】:

  • <(cmd) 语法是一种相当标准的语法,也受到更广泛使用的 shell(如 bash)的支持。我过去曾将其与 diff 一起使用,但没有发现任何问题。
  • 当然,这不仅仅与diff 一起使用。我也将它用于vimdiff 和其他工具。
猜你喜欢
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多