examples bash shell grep tail cut

bash - examples - man cut linux



cola-f en grep en corte no funciona correctamente (1)

Estoy tratando de construir un script de shell para monitorear algunos archivos de registro. Estoy usando un comando como este:

tail -f /var/somelog | grep --line-buffered " some test and p l a c e h o l d e r" | cut -f 3,4,14 -d " "

el archivo de registro es como

some test and p l a c e h o l d e r 3 some test and p l a c e h o l d e r 4 some test and p l a c e h o l d e r 5 some test and p l a c e h o l d e r 6

y así sucesivamente .. Mi problema es que la salida del comando no muestra la última línea

some test and p l a c e h o l d e r 6

hasta la linea

some test and p l a c e h o l d e r 7

Se agrega al registro.

Espero haber aclarado mi problema. Alguien puede ayudarme a resolver esto? Gracias :)


el problema está casi seguramente relacionado con la forma en que grep y cut amortiguan su salida. Aquí hay un truco que debería solucionar el problema, aunque estoy seguro de que hay formas más bonitas de hacerlo:

tail -f /var/somelog | while read line; do echo "$line" | grep "some test and p l a c e h o l d e r" | cut -f 3,4,14 -d " "; done

(no olvides el ; done al final del comando)

alternativamente, debido a que gawk no almacena su salida, puede usarlo en lugar de cut para evitar el incómodo bucle while:

tail -f log | grep --line-buffered "some test and p l a c e h o l d e r" | gawk ''{print $3,$4,$14}''

visite http://www.pixelbeat.org/programming/stdio_buffering/ para obtener más información sobre los problemas de almacenamiento en búfer.