Eu tenho um programa texcount
que gera o número de palavras no meu documento LaTeX. Também posso canalizar a saída disso para sed
criar novas linhas de quebra de linha TeX e gravar isso em um arquivo que eu possa incluir no meu documento final. Mas quando eu faço texcount foo.tex | sed s/$/'\\\\'/ > wc.tex
a saída da linha de comando texcount
é suprimida.
Como faço para que a saída do primeiro comando seja exibida no terminal e canalizada para sed?
shell
text-processing
utilities
Seamus
fonte
fonte
tee
. Se você tem certas cascas como o Bash, pode canalizar a saída do tee usando>(some further commands)
. Em outros shells, você teria que fornecer ao tee um argumento de nome de arquivo (esse é o modo padrão de operação), executarsome further commands < thatfile
e excluir o arquivo. Ou veja a resposta de Hari abaixo.Você precisa do comando "tee", que permite dividir tubos.
Isso deixaria o arquivo output.txt adicional. Leia isto para obter mais informações: http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ Você também pode fazer "man tee".
fonte
texcount foo.tex | tee unmodified |sed s/$/'\\\\'/ > modified
coloca versões modificadas e não modificadas da saída nos dois arquivos. Como imprimo a versão não modificada no terminal? Eu tenteitee stdout
, mas que imprime nada ...&& cat unmodified
no final. Isso descarregará a saída não modificada no terminal.texcount foo.tex | tee output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt
. Ou você poderia usartexcount foo.tex | tee output.txt; sed s/$/'\\\\'/ output.txt > wc.tex
. Em ambos os casos, você provavelmente desejariarm output.txt
depois.Você pode usar o bastante idiomático
/dev/tty
é um dispositivo mágico que se refere ao terminal de controle do processo atual.fonte