Eu tenho um script que gera texto para stdout
. Quero ver toda essa saída no meu terminal e, ao mesmo tempo, quero filtrar algumas linhas e salvá-las em um arquivo. Exemplo:
$ myscript
Line A
Line B
Line C
$ myscript | grep -P 'A|C' > out.file
$ cat out.file
Line A
Line C
Eu quero ver a saída do primeiro comando no terminal e salvar a saída do segundo comando em um arquivo. Ao mesmo tempo. Tentei usar tee
, mas sem resultado, ou melhor, com resultado revertido .
/dev/stderr
é comum./dev/tty
(o terminal atual) também funcionaria aqui, e é padrão .tee /dev/tty
serviu maravilhosamente por minha exigência de ter que imprimir ostdout
script de um terminal e canalizá-lo para ostdin
de outro comando também! Thankees! :-)Ou com substituição de processo (ksh93, zsh ou bash):
Com zsh:
fonte
/dev/fd/3
poderá ser substituído por>(cat 1>&3)
Aqui está outra maneira de
sed
:Por padrão,
sed
imprime todas as linhas para que, neste caso, stdout seja o mesmo que stdin (ou seja, você verá toda a saídamyscript
na tela).Além disso, todas as linhas correspondentes
PATTERN
serãow
escritas paraout.file
fonte
você não especificou como usou o comando tee, mas isso deve funcionar:
pelo menos funcionou no meu servidor há alguns minutos ...
fonte