Pregunta

estoy usando 'tail-f' para seguir un archivo de registro que se pone al día; tubo siguiente I la salida de ese a grep para mostrar sólo las líneas que contienen un término de búsqueda ( "org.springframework" en este caso); Finalmente me gustaría hacer es una tubería de la salida de grep para un tercer mandato, 'corte':

tail -f logfile | grep org.springframework | cut -c 25-

El comando de corte eliminaría los primeros 25 caracteres de cada línea para mí si se pudiera conseguir el aporte de grep! (Funciona como se esperaba si elimino 'grep' de la cadena.)

Estoy usando cygwin con bash.

Los resultados reales:. Cuando agrego el segundo tubo para conectar con el comando 'corte', el resultado es que se cuelga, como si estuviera esperando a la entrada (en el caso de que se preguntan)

¿Fue útil?

Solución

En mi sistema, sobre 8K se reguló antes de que llegara cualquier salida. Esta secuencia trabajó para seguir el archivo inmediatamente:

tail -f logfile | while read line ; do echo "$line"| grep 'org.springframework'|cut -c 25- ; done

Otros consejos

Suponiendo grep de GNU, añadir --line-buffered a la línea de comandos, por ejemplo.

tail -f logfile | grep --line-buffered org.springframework | cut -c 25-

Editar

Veo búfer grep no es el único problema aquí, como corte no permite el almacenamiento en búfer linewise.

es posible que desee para tratar de reemplazarlo con algo que se puede controlar, tales como sed:

tail -f logfile | sed -u -n -e '/org\.springframework/ s/\(.\{0,25\}\).*$/\1/p'

o awk

tail -f logfile | awk '/org\.springframework/ {print substr($0, 0, 25);fflush("")}'

Lo que tienes debería funcionar bien - que es la idea de tuberías. El único problema que veo es que, en la versión de cut tengo (GNU coreutiles 6,10), se debe utilizar el cut -c 25- sintaxis (es decir, utilizar un signo menos en lugar de un signo más) para eliminar los primeros 24 caracteres.

También está en busca de diferentes patrones en los dos ejemplos, en caso de que sea relevante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top