Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

240
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!