Expressions régulières

Notes

Exemple 1 : fichier de configuration simplifié

Lorsque l'on veux consulter un fichier de configuration, il peut-être pratique d'enlever tout ce qui peut polluer la lisibilité.

cat /etc/sarg/sarg.conf | grep -v '\(^#\|^[[:space:]]$\|^$\)' | more

Explication :

  • cat /etc/sarg/sarg.conf : on affiche le fichier de configuration
  • grep -v : on élimine tous les champs correspondants à la rêgle :
    • ^# : Tous les fichiers commentés (#)
    • ^[[:space:]]$ : Lignes ne contenant que des blancs
    • ^$ : ligne vide
  • more affiche sur plusieurs pages si nécessaire.

Exemple 2 : log du serveur proxy simplifié

Utilisant Squid comme serveur proxy, il peut être intéressant de consulter la liste des sites visités en temps réel. Seulement, les lignes qui défilent sont généralement assez longue. L'idée est donc de n'afficher que l'adresse ip de l'utilisateur et le site visité. Ce qui donne :

tail -f /var/log/squid/access.log | egrep -v --line-buffered 'DENIED' | tr -s ' ' | cut -f3,7 -d ' '

Explication :

  • tail /var/log/squid/access.log : On affiche le log
  • egrep -v --line-buffered 'DENIED' : On enlève les sites refusés par filtres anti-bannière dans squid. Le paramètre –line-buffered indique à grep de traiter les données ligne par ligne(pas de latence).
  • tr -s ' ' : on sépare les colonne par des espaces (nécessaire avec cut)
  • cut -f3,7 -d ' ' : on ne sélectionne que la 3ème et 7ème colonne.
  • en option : sort : on réordonne la liste
  • en option : uniq : on enlève les doublons éventuels

Résultat :

172.19.7.72 http://l.yimg.com/us.js.yimg.com/lib/bc/bcr_2.0.3.js
172.19.7.127 urs.microsoft.com:443
172.19.7.127 http://e.pagesjaunes.fr/m/web/204004129011?
172.19.7.127 http://ciwstat.pagesjaunes.fr/statique?
172.19.7.127 http://www24.mappy.com/x/i/swf/verdanab.swf
172.19.7.127 http://audience.pagesjaunes.fr/images/791874860.8690482.gifc=%5Eon%5E&d=%5Ewww24.mappy.com%5E&r=%5Ehttp://www.pagesjaunes.fr/ciweb2g-pagesjaunes/PlanCenterFrame.do?
172.19.7.87 http://www.aliceadsl.fr/inchome2006/img/puce_rouge.gif
172.19.7.87 http://www.aliceadsl.fr/inchome2006/img/Nav_bloc_Haut24/onglets_gris/right.gif
172.19.7.87 http://www.aliceadsl.fr/inchome2006/img/puce_rouge.gif

Le traitement de la commande cut semble ralentir le processus. Je n'ai pas encore de solution miracle. Au pire utiliser le code suivant. Il affichera le résultat mais de manière statique.

tail /var/log/squid/access.log | grep -v 'DENIED' | tr -s ' ' | cut -f3,7 -d ' '