web-dev-qa-db-ja.com

プログラムの出力をLinuxのdiffコマンドにリダイレクトする方法

stdout に書き込むプログラムがあります。出力をLinux diff コマンドにリダイレクトする方法はありますか、それとも出力をファイルに書き込んでから比較する必要がありますか?

たとえば、プログラムのテスト入力ファイルがたくさんあり、対応する期待される出力が別のファイルセットにあります。そして、./program < t1.input | diff t1.expectedのようなことをしたいと思います。

4
Ian Burris

これを行うこともできます:

./program < t1.input | diff t1.expected -
5
garyjohn

Bashで:

diff t1.expected <(./program < t1.input)

またはbashを使用する簡単な方法:

diff <(./program) <(cat t1.expected)

私はよくもっと一般的なケースを使います

diff <(command1) <(command2)

ここで、2つのコマンドは、たとえば、異なる入力ファイル、または同じファイルで動作するプログラムの異なるバージョン。 gvimdiffでも動作します。

3
jcc

プログラムの2つの出力を比較したい場合は、zshが最適です。

$ diff =(program1 < input1) =(program2 < input2)
1
kmkkmk