Grep sur une colonne en temps réel

Posté le 21 février   |   Linux for dummies    |   un commentaire »    |   Ajouter un commentaire »

La première chose au programme de ce billet, c'est apprendre à lire un log en temps réel (par exemple ici le fichier squid.log, généré par un squid et complété en continu) :

tail -f squid.log

Ça marche, mais compliquons un peu l'hypothèse de départ. On ajoute au système un logrotate qui va faire tourner le log toutes les 5 minutes (et qui va renommer squid.log en squid.log.YYYYMMDD.HHhMMmSSs). Si on continue avec notre tail précédent, toutes les cinq minutes on sera bon pour le relancer (le flux est cassé à la rotation). Heureusement, tail a une autre option, qui est plus robuste face à la suppression du fichier qu'on regarde :

tail -F squid.log

Et là c'est gagné. Maintenant, on va encore compliquer un peu et on va garder uniquement les lignes qui nous intéressent (qui contiennent le mot "motif"). Habituellement, quand on cherche une chaine de caractère dans un fichier de log en temps réel, on a tendance à grepper simplement :

tail -F squid.log | grep motif

Mais si on a face à nous une ligne qui se présente ainsi, on peut matcher des lignes qui ne vont pas forcément nous intéresser :

2011-02-21 15h54h10s motif_qui_nous_intéresse blabla blibli
2011-02-21 15h54h10s blabla motif_qui_ne_nous_intéresse_pas blibli

On a ici des lignes avec 5 colonnes séparées par des espaces, on veut uniquement grepper sur "motif" dans la troisième colonne :

tail -F squid.log | awk '$3 ~ "motif"'

Et éventuellement, si la colonne 4 ne nous intéresse vraiment pas, on peut même profiter du awk pour seulement afficher ce qui est pertinent :

tail -F squid.log | awk '$3 ~ "motif" {print $1,$2,$3,$5}'

J'en profite pour faire passer un rappel sur grep : non, on ne fait pas un cat pipe grep, un grep "motif" "fichier" suffit amplement, vous risquez de vous faire pendre ou brûler si vous osez faire ça.

Et en cadeau, un mémo sur awk : http://www.shellunix.com/awk.html

Commentaires

1. Le mardi 15 mars 2011, 09:08 par Cheap Supra Skytop III For Sale

Ideal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life.

La discussion continue ailleurs

URL de rétrolien : http://blog.guiling.fr/index.php?trackback/53

Fil des commentaires de ce billet