¿Es posible hacer un tail -f
(o similar) en un archivo, y grep
al mismo tiempo? No me importaría que otros comandos solo buscaran ese tipo de comportamiento.
shell
command-line
grep
tail
xenoterracida
fuente
fuente
Funcionará bien; de manera más general,
grep
esperará cuando un programa no salga y seguirá leyendo a medida que ingrese la salida, así que si lo hace:Nada sucederá durante 5 segundos, luego grep generará la "prueba" coincidente, y luego cinco segundos más tarde saldrá cuando el proceso de canalización lo haga
fuente
Agregue
--line-buffered
agrep
, y eso puede reducir el retraso para usted. Muy útil en algunos casos.fuente
grep
no va a una terminal (redirigida a otro tipo de archivo). el almacenamiento en línea es el valor predeterminado cuando la salida va a un terminal, por lo que no hará ninguna diferencia allí. Tenga en cuenta que esa opción es específica de GNU.Simplemente puede canalizar la salida de
grep
entail -f
. También hay programas que combinantail -f
funcionalidad con filtrado y coloración, en particular multitail ( ejemplos ).fuente
¡Veo a todas estas personas que dicen usar
tail -f
, pero no me gustan las limitaciones de eso! Mi método favorito para buscar un archivo mientras también veo nuevas líneas (p. Ej., Normalmente trabajo con archivos de registro a los que se agrega la salida redirigida de procesos ejecutados periódicamente a través de trabajos cron) es:Esto supone GNU tail y grep. Detalles de soporte de la página de manual de cola (coreutils de GNU, la mía es v8.22) [ https://www.gnu.org/software/coreutils/manual/coreutils.html] :
Entonces, la parte de cola de mi comando equivale a
tail --follow --retry --lines=+0
, donde el argumento final lo dirige a comenzar desde el principio, omitiendo las líneas cero.fuente
Usa lo anterior, lo uso habitualmente.
fuente
Puede usar netcat para seleccionar los resultados de tail -f ya que los nuevos resultados se obtienen con bastante facilidad.
Esto configura grep para escuchar los resultados de la entrada proveniente del puerto 1337.
El segundo comando canaliza la salida de tail -f a netcat y lo envía localhost 1337. Para hacerlo localmente, debe cambiar ttys para cada uno de los dos conjuntos de comandos , o usa algo como la pantalla.
fuente
Funciona. Pero tenga cuidado de que la salida ya no sea instantánea: se almacena a través de la tubería.
fuente
tail -f
en una ventana ytail -f logfile | grep pattern
en la otra ventana. Las líneas que contienenpattern
no siempre aparecen en ambas ventanas al mismo tiempo. He visto líneas que aparecen separadas por 30 segundos en raras ocasiones, lo cual fue molesto.tee
o algo así.