Respuesta rápida. Puedes tee >(what_to_do) >(another_thing_to_do)
seguir adelante con tu comando para tantas cosas diferentes que quieras hacer.
Ejemplo:
Salida del archivo de prueba original:
:~$ cat testfile.txt
Device Model: LITEONIT LCS-256M6S 2.5 7mm 256GB
Serial Number: TW0XFJWX550854187616
Salida con tee
comandos agregados:
:~$ cat testfile.txt | tee >(tail -1) >(wc) >(awk '{print $3,$1,$2}')
Device Model: LITEONIT LCS-256M6S 2.5 7mm 256GB
Serial Number: TW0XFJWX550854187616
LITEONIT Device Model:
TW0XFJWX550854187616 Serial Number:
2 10 91
Serial Number: TW0XFJWX550854187616
Cada comando en tee son solo comandos normales que usaría en la línea de comandos, como agregar >(head -1 | wc)
trabajos también.
:~$ cat testfile.txt | tee >(tail -1) >(head -1 | wc) >(awk '{print $3,$1,$2}')
Device Model: LITEONIT LCS-256M6S 2.5 7mm 256GB
Serial Number: TW0XFJWX550854187616
1 7 52
LITEONIT Device Model:
TW0XFJWX550854187616 Serial Number:
Serial Number: TW0XFJWX550854187616
O también puede tomar la última palabra de decir la última línea mediante el uso awk
de $NF
una wc
, así como esto:
:~$ cat testfile.txt | tail -1 | tee >(wc) >(awk '{print $NF}')
Serial Number: TW0XFJWX550854187616
TW0XFJWX550854187616
1 3 39
NOTA: Agregar un |
comando de tubería al final puede anular el uso de los múltiples comandos del tee
comando. Tengo algunos ejemplos aquí que he estado probando:
Ejemplo 1 (comando Pipe que tira de todas las últimas palabras):
:~$ echo "This is just five words" | tee >(wc -l) >(wc -w) >(wc -c) | awk '{print $NF}'
words
24
5
1
Ejemplo 2 (No muestra la salida de los comandos wc. Comando Pipe agarrando la tercera palabra):
:~$ echo "This is just five words" | tee >(wc -l) >(wc -w) >(wc -c) | awk '{print $3}'
just
Ejemplo 3 (Agarrando la tercera palabra de la línea de eco. Comando Tee):
:~$ echo "This is just five words" | tee >(wc -l) >(wc -w) >(wc -c) >(awk '{print $3}')
This is just five words
just
24
5
1
Ejemplo 4 (Tomando la última palabra de la línea de eco. Comando Tee):
:~$ echo "This is just five words" | tee >(wc -l) >(wc -w) >(wc -c) >(awk '{print $NF}')
This is just five words
words
24
5
1
¡Espero que esto ayude!
tee
es falsa. La razón por la que generalmente obtiene el pedido correcto es que en una máquina de baja carga, el primer proceso del consumidor se ejecuta primero. En una máquina más ocupada, el primer consumidor podría quedarse dormido antes de que imprima algo.tee
no tiene idea de los consumidores: son creados porbash
quién procesa la línea. Todo lo quebash
hace es copiar los descriptores de archivos abiertos. Más allá de eso, hay varios consumidores que escriben en descriptores de archivo abiertos en el mismo archivo. El núcleo se encarga de eso, pero ciertamente el orden en que aparecieron en labash
línea de comando no será un factor.