差异来自一个来源的两个管道

时间:2014-07-13 00:06:58

标签: shell diff tee

我找到了如何在SO上区分两个管道的答案,语法如下所示。

diff <(./a.out) <(./a.out | sort -n)

但是,它会创建a.out的两个进程,由ps验证。是否可以只有一个a.out,将输出广播到两个流中,并在这两个流上进行差异化?

./a.out | tee >(cat) >(sort -n)

我可以使用tee进行广播,但不知道如何使用diff

有什么建议吗?

编辑:为什么我不想创建两个进程?原因是这是一个并发程序,因此输出是非确定性的。因此,我必须从一个进程使用相同的输出。

2 个答案:

答案 0 :(得分:1)

不确定您对2个进程有什么异议,但也许您可以使用这样的fifo:

mkfifo fifo
diff <(./a.out | tee fifo) <(sort < fifo)

答案 1 :(得分:0)

如果您可以使用文件

,有一种简单的方法

说, ./a.out>文件1

cat file1 | sort -n&gt; file2的

diff file1 file2

(如果所有空间都是约束或删除不需要的文件) rm file1 file2

到此结束时,你只有一个a.out在运行,你也得到了差异