Fazendo duas coisas com saída de um comando

9

Eu tenho um programa texcount que gera o número de palavras no meu documento LaTeX. Eu também posso canalizar a saída disso para sed para fazer as quebras de linha do NewLine TeX e escrever 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 de texcount é suprimida.

Como posso obter a saída do primeiro comando a ser exibido no terminal e canalizado para sed?

    
por Seamus 11.01.2011 / 12:36

3 respostas

9

Você pode usar um canal anônimo para o segundo comando:

texcount foo.tex | tee >(sed s/$/'\\'/ > wc.tex)
    
por 11.01.2011 / 17:22
7

Você precisa do comando "tee", que permite dividir os canais.

texcount foo.tex | tee >output.txt | sed s/$/'\\'/ > wc.tex ; cat output.txt

Isso deixaria o arquivo output.txt adicional. Leia isto para mais informações: link Você também pode fazer "man tee".

    
por 11.01.2011 / 12:38
6

Você pode usar o bastante idiomático

texcount foo.tex | tee /dev/tty | sed s/$/'\\'/ > wc.tex

/dev/tty é um dispositivo mágico que se refere ao terminal de controle do processo atual.

    
por 12.01.2011 / 17:54