Est-il possible de faire un tail -f
(ou similaire) sur un fichier, et grep
ce en même temps? Cela ne me dérangerait pas que d'autres commandes recherchent simplement ce genre de comportement.
shell
command-line
grep
tail
xénoterracide
la source
la source
Cela fonctionnera bien; plus généralement,
grep
attendra lorsqu'un programme ne sort pas, et continuera à lire à mesure que la sortie arrive, donc si vous le faites:Rien ne se passera pendant 5 secondes, puis grep affichera le "test" correspondant, puis cinq secondes plus tard, il se terminera lorsque le processus canalisé
la source
Ajoutez
--line-buffered
àgrep
, et cela peut réduire le délai pour vous. Très utile dans certains cas.la source
grep
ne va pas à un terminal (redirigée vers un autre type de fichier). la mise en mémoire tampon de ligne est la valeur par défaut lorsque la sortie est envoyée à un terminal, donc cela n'y fera aucune différence. Notez que cette option est spécifique à GNU.Vous pouvez simplement diriger la sortie de
grep
danstail -f
. Il existe également des programmes qui combinent latail -f
fonctionnalité avec le filtrage et la coloration, en particulier le multitail ( exemples ).la source
Je vois tous ces gens dire d'utiliser
tail -f
, mais je n'aime pas les limites de cela! Ma méthode préférée de recherche d'un fichier tout en surveillant les nouvelles lignes (par exemple, je travaille généralement avec des fichiers journaux auxquels sont ajoutés la sortie redirigée de processus exécutés périodiquement via des tâches cron) est:Cela suppose GNU tail et grep. Détails de support de la page de manuel de queue (GNU coreutils, le mien est v8.22) [ https://www.gnu.org/software/coreutils/manual/coreutils.html] :
Ainsi, la partie de queue de ma commande équivaut à
tail --follow --retry --lines=+0
, où l'argument final lui ordonne de commencer au début, en sautant zéro ligne.la source
Utilisez ce qui précède, je l'utilise habituellement.
la source
Vous pouvez utiliser netcat pour récupérer les résultats de tail -f car les nouveaux résultats arrivent assez facilement.
Cela définit grep pour écouter les résultats des entrées provenant du port 1337.
La deuxième commande dirige la sortie de tail -f vers netcat et l'envoie localhost 1337. Pour le faire localement, vous devez changer ttys pour chacun des deux ensembles de commandes ou utilisez quelque chose comme un écran.
la source
Ça marche. Mais attention à ce que la sortie ne soit plus instantanée: elle est tamponnée à travers le tube.
la source
tail -f
dans une fenêtre ettail -f logfile | grep pattern
dans l'autre fenêtre. Les lignes contenantpattern
n'apparaissent pas toujours dans les deux fenêtres en même temps. J'ai vu des lignes apparaître à 30 secondes d'intervalle en de rares occasions, ce qui était ennuyeux.tee
ou quelque chose.