Je suis en train d'écrire un script shell pour faire une "queue" sur un fichier journal en pleine croissance. Ce script accepte les paramètres à rechercher et greps incrémente la sortie sur eux.Création de chaînes grep dynamiquement
Par exemple, si le script est invoqué comme suit:
logs.sh string1 string2
il devrait se traduire par:
tail -f logs.txt | grep string1 | grep string2
Je construis la liste des chaînes de grep comme ceci:
full_grep_string=""
for grep_string in $*
do
full_grep_string="$full_grep_string | grep $grep_string"
done
La chaîne est construite correctement, mais quand j'essaye de l'étiqueter enfin à la commande de queue, comme si ...
tail -f $LOG_FILE_PATH $full_grep_string
... le grep ne s'applique pas, et j'obtiens les bûches non filtrées.
Ai-je raté quelque chose ici? Ou y a-t-il un moyen plus facile de le faire?
Juste une petite précision: l'idée que votre script devrait afficher les lignes du fichier journal qui contient à la fois string1 et string2, ou aviez-vous l'intention de trouver des lignes contenant l'une des chaînes? –
En outre, quelle coque utilisez-vous? frapper? –
pour moi sur Debian Lenny Je dois faire face au problème que deux grep combinés ne fonctionnent pas avec tail -f mais avec juste la queue – tuergeist