Comment pensez-vous de la pipe d'entrée par le biais de grep pour une autre utilité?
Je suis en utilisant "tail-f" pour suivre un fichier journal, car il est mis à jour; ensuite, j'ai tuyau de la sortie de l'grep pour afficher uniquement les lignes contenant un terme de recherche ("org.springframework" dans ce cas); enfin, je voudrais faire est de tuyauterie de la sortie de grep pour une troisième commande, 'taille':
tail -f logfile | grep org.springframework | cut -c 25-
La commande couper permettrait de supprimer les 25 premiers caractères de chaque ligne pour moi si elle pouvait obtenir l'entrée de grep! (Il fonctionne comme prévu si j'éliminer 'grep' de la chaîne.)
Je suis en utilisant cygwin avec bash.
Les résultats réels: Lorsque j'ajoute le second tuyau pour se connecter à la "coupure" de commande, le résultat est qu'il se bloque, comme si il est en attente d'entrée (dans le cas où vous poseriez la question).
- Si j'arrête après grep (sans la pipe de "couper"), il fonctionne (sans les décaper les premières 24 ou 25 caractères).
- Le vrai problème ici, est que
tail -f
ne se termine jamais, de sorte que le reste du pipeline garde d'attente pour plus d'entrée
Vous devez vous connecter pour publier un commentaire.
Sur mon système, environ 8K a été mis en mémoire tampon avant que j'ai obtenu aucune sortie. Cette séquence a travaillé à suivre immédiatement le fichier:
En supposant GNU grep, ajouter
--line-buffered
à votre ligne de commande, par exemple.Edit:
Je vois grep mise en mémoire tampon n'est pas le seul problème ici, que la coupe ne permet pas linewise de mise en mémoire tampon.
vous pourriez vouloir essayer de la remplacer par quelque chose que vous pouvez contrôler, comme sed:
ou awk
fflush
une faute de frappe?""
argument est gawk bien que très spécifique.Ce que vous avez devrait fonctionner correctement -- c'est l'idée de pipelines. Le seul problème que je vois, c'est que, dans la version de
cut
j'ai (GNU coreutiles 6.10), vous devez utiliser la syntaxecut -c 25-
(à savoir l'utilisation d'un signe moins au lieu d'un signe plus) pour supprimer les 24 premiers caractères.Vous êtes également à la recherche de modèles différents dans vos deux exemples, dans le cas où c'est pertinent.