Diff a saída de dois comandos 'awk'

4

Estou tentando calcular a diferença entre a saída de dois comandos awk , mas minhas tentativas simples parecem estar falhando. Aqui está o que estou tentando:

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

Isso não funciona por motivos desconhecidos para mim. Eu estava sob a suposição de que $() construct foi usado para capturar a saída de outro comando, mas minha invocação "diff" não reconhece as duas entradas dadas a ele. Existe alguma maneira de fazer isso funcionar?

A propósito, não posso usar a solução óbvia de escrever a saída desses dois comandos para separar arquivos, já que estou conectado a uma caixa de produção sem privilégios de 'gravação'.

    
por sasuke 21.12.2011 / 19:06

1 resposta

17

diff espera os nomes de dois arquivos, então você deve colocar os dois resultados em dois arquivos, e então compará-los:

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

ou, usando ksh93 , bash ou zsh , você pode usar a substituição de processos:

diff <(awk '{print $3}' f1.txt | sort -u) <(awk '{print $2}' f2.txt | sort -u)
    
por 21.12.2011 / 19:11