Como redirecionar a saída de um programa para o comando diff do Linux

3

Eu tenho um programa que escreve para stdout . Existe uma maneira que eu possa redirecionar a saída para o comando Linux diff ou eu tenho que escrever a saída para um arquivo e depois comparar isso?

Por exemplo, eu tenho um monte de arquivos de entrada de teste para um programa e a saída esperada correspondente em outro conjunto de arquivos. E eu gostaria de fazer algo como ./program < t1.input | diff t1.expected .

    
por blcArmadillo 13.01.2011 / 23:01

4 respostas

4

Você também pode fazer isso:

./program < t1.input | diff t1.expected -
    
por 14.01.2011 / 00:12
4

No bash:

diff t1.expected <(./program < t1.input)
    
por 13.01.2011 / 23:05
3

Ou a maneira simples de usar o bash:

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

Costumo usar o caso mais geral

diff <(command1) <(command2)

em que os dois comandos podem ser semelhantes, exceto por ex. diferentes arquivos de entrada ou diferentes versões de um programa operando no mesmo arquivo. Também trabalha com gvimdiff.

    
por 09.10.2012 / 19:25
1

Caso você queira diferenciar duas saídas de programas, o zsh é seu amigo:

$ diff =(program1 < input1) =(program2 < input2)
    
por 24.04.2011 / 01:49