Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

236
Vistas
¿Cómo redirigir la salida de un archivo de texto a una tubería?

Estoy ejecutando una herramienta de Unix que toma la opción -l log_file . Me gustaría redirigir eso a una tubería, algo como esto:

 my_tool -l /dev/tty | grep "Aye, Caramba!"

Desafortunadamente, cuando especifico /dev/tty , la salida de my_tool va directamente a la ventana de la consola, sin pasar por grep .

También probé /dev/stdout , sin éxito.

Por lo tanto, la pregunta: ¿qué debo especificar para la opción -l anterior para capturar la salida correspondiente en la tubería?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Podrías intentar usar una tubería con nombre :

 mkfifo pipe grep "Aye, Caramba!" pipe & my_tool -l pipe

En este ejemplo, grep abrirá la pipe para lectura, que se bloqueará hasta que otro proceso la abra para escritura. Cuando my_tool escribe datos en la tubería, grep podrá leer los datos. Una vez que my_tool cierra la pipe , grep obtendrá una indicación de fin de archivo y saldrá.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar la sustitución de procesos para crear un identificador de archivo que canalice cualquier contenido escrito en el identificador a través de una canalización de comandos.

Por ejemplo, esto debería funcionar:

 my_tool -l >(grep "Aye, Caramba!" > path/to/store/partial.log)

Esto le pasa a my_tool una ruta /dev/fd/XXX en la que puede escribir. Cualquier contenido escrito en esa ruta se canaliza a través de grep y luego se escribe en el archivo partial.log .

Funcionalmente, esto es similar a la sugerencia de Kenster de usar canalizaciones con nombre, pero en mi opinión, a menudo es más fácil trabajar con la sustitución de procesos y razonar sobre ella.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede ser útil ejecutar un proceso que genere el registro y otro que siga el registro que se crea y grepping su salida

Para hacerlo de esa manera, en una consola podría ejecutar my_tool, generando el registro deseado.

 my_tool -l /tmp/mylog

Luego, en una consola diferente, podría ejecutar:

 tail -f -n+0 /tmp/mylog | grep --line-buffered the_pattern_to_match

tail imprimirá las "últimas" líneas del archivo pasado como argumento. -n+0 le dice a tail que procese el archivo completo hasta donde se ha escrito. -f decirle a tail que mantenga el archivo abierto y que siga enviando lo que llegue a la salida estándar (en este caso redirigido a la canalización).

Luego, en grep, querrá el --line-buffered para que no espere a que finalice la cola antes de imprimir su propia salida.

Espero que esto ayude.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda