¿Cómo puedo unir dos tuberías con nombre en un flujo de entrada único en Linux?

Pregunta:

Usando la función de tuberías ( | ) en Linux, puedo reenviar la entrada estándar a una o varias secuencias de salida.

Puedo usar tee para dividir la salida en subprocesos separados.

¿Existe un comando para unir dos flujos de entrada?

¿Cómo haría esto? ¿Cómo funciona diff?

Respuesta:

Personalmente, mi favorito (requiere bash y otras cosas que son estándar en la mayoría de las distribuciones de Linux)

Los detalles pueden depender mucho del resultado de las dos cosas y de cómo desea fusionarlas …

Contenido de command1 y command2 uno después del otro en la salida:

cat <(command1) <(command2) > outputfile

O si ambos comandos generan versiones alternativas de los mismos datos que desea ver uno al lado del otro (lo he usado con snmpwalk; números en un lado y nombres MIB en el otro):

paste <(command1) <(command2) > outputfile

O si desea comparar la salida de dos comandos similares (diga una búsqueda en dos directorios diferentes)

diff <(command1) <(command2) > outputfile

O si son salidas ordenadas de algún tipo, combínelas:

sort -m <(command1) <(command2) > outputfile

O ejecute ambos comandos a la vez (aunque podría alterar un poco las cosas):

cat <(command1 & command2) > outputfile

El operador <() configura una canalización con nombre (o / dev / fd) para cada comando, canalizando la salida de ese comando a la canalización con nombre (o referencia de identificador de archivo / dev / fd) y pasa el nombre en la línea de comandos. Hay un equivalente con> (). Podrías hacer: command0 | tee >(command1) >(command2) >(command3) | command4 para enviar simultáneamente la salida de un comando a otros 4 comandos, por ejemplo.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım