Como parar o 'grep' de truncar a saída do pipe

2

Existe alguma maneira de ter um echo no final de um pipe simplesmente anexado à saída atual em vez de remover tudo? Por exemplo, como posso manter a saída para meus cat e grep e adicionar "END OF OUTPUT" ao final da saída do mesmo canal:

$ cat file.txt | grep 'foo' | echo "END OF OUTPUT"
something foo 
foo
foo something
END OF OUTPUT

Semelhante a como cat - funciona:

echo "START OF OUTPUT" | cat - file.txt
    
por user1227038 13.02.2013 / 07:00

3 respostas

6

Assim:

{ grep foo file.txt; echo END OF OUTPUT; } > output.txt

Isso agrupa comandos sem iniciar um subshell (exceto com o shell Bourne).

Você poderia fazer:

grep foo file.txt | cat - <(echo END OF OUTPUT) > output.txt

(com ksh, bash ou zsh), mas isso cria mais alguns processos e canais extras sem nenhum benefício extra.

    
por 13.02.2013 / 07:39
3

Use um subshell para agrupar a saída como essa,

(grep foo file.txt; echo "END OF OUTPUT") > output.txt

    
por 13.02.2013 / 07:04
1

Isso vai conseguir o que você quer

$ cat file.txt | grep 'foo' ; echo "END OF OUTPUT"
    
por 13.02.2013 / 11:25

Tags