Como posso usar o tee para imprimir o fluxo de entrada?

0

Eu tenho uma linha de tubulação parecida com esta:

cat myfile | awk '$3 > 0 { print $1, $2 * $3 }' | tee >(printf) | perl myscript.pl

Gostaria de imprimir a entrada no meu script Perl usando tee . Como posso fazer isso?

    
por turtle 19.01.2014 / 23:26

2 respostas

2

A dificuldade aqui é que quando tee é invocado no pipeline, seu stdout já foi destinado a stdin de perl . A única maneira de saber onde o stdout foi direcionado antes do pipeline é iniciar o dup para um outro descritor de arquivo, e para acessar esse descritor de arquivo via /dev/fd/n , se o seu SO suportar isso. Então, isso pode ser uma opção:

# dup fd 1 to another fd for the duration of this shell script.
# we'll use 4. any number higher than 2 is probably OK, but
# some coordination is required if a containing shell script
# decided to do the same thing.
exec 4>&1
cat myfile | awk '$3 > 0 { print $1, $2 * $3 }' | tee /dev/fd/4 | perl myscript.pl
    
por 19.01.2014 / 23:58
1

Se você quiser imprimir no terminal, use /dev/tty . Para mais, veja a página man tty (4) .

    
por 20.01.2014 / 00:41