Diga que eu tenho:
$ cat tmp1.txt
a
b
c
Então
$ paste tmp1.txt <(tr '[:lower:]' '[:upper:]'<tmp1.txt)
a A
b B
c C
Como eu modificaria o acima para
1/ invocar tmp1.txt
apenas uma vez? (eu suspeito tee
)
2/ forneça o conteúdo de tmp1.txt
do terminal (como se fosse produzido pela saída de um comando). Para isso, tentei mexer nisso, mas não fui muito longe:
$ cat<< 'EOF' | tee >(tr '[:lower:]' '[:upper:]')
a
b
c
EOF
que emite:
a
b
c
A
B
C
Usando um pipe nomeado para criar um canal adicional para dados entre
tee
etr
:Alternativamente (mas não tão bonito), movendo o
tr
para a esquerda do|
:Você precisa do pipe nomeado extra para poder fornecer os dados transformados por
tr
topaste
. Opaste
utilitário precisa ler dois fluxos, os dados originais e os dados transformados. Um deles pode ser um fluxo padrão, enquanto o outro precisa vir do arquivo original (lendo o arquivo uma segunda vez) ou de um pipe nomeado, conforme mostrado acima.uma solução simples usando awk
ou
ou usando pipe nomeado ou fifo