Linux (Sommaire)

La commande grep

Introduction

Sous linux il existe un puissant utilitaire de recherche de texte s'appuyant sur les expressions régulières. Cet utilitaire s'appelle grep!
Qu'est ce qu'une expression régulière? Vous en faites pas je vais vous l'expiquer...
Cette commande permet d'afficher les lignes où apparaisse un certain motif défini par l'expression régulière que nous lui donnons en paramètre.
Cette commande grep trouvera sa grande utilité lorsqu'on veut visualiser un fichier énorme comme les log.

Commençons par le commencement, c'est quoi une expression régulière... c'est ça:

[a-zA-Z0-9]{1,}@[a-zA-Z]{2,}\.[a-zA-Z]{2,4}

Hein? Quoi? Mais non c'est pas du chinois! Vous verrai c'est pas si compliquer. Je vous jure que ça veut réellement dire quelquechose

La regex la plus simple

Nous l'avons vu tout à l'heure, une expression régulière ou regex permet de trouver une certaine chaîne de caractères. Donc voici la plus simple de ces regex:

dupond

cette regex va chercher toute les occurrence de dupond.

Classes de caractères

Ouais pas très spectaculaire mais ça ressemble pas du tout a ce que j'ai mis là haut... On va passer la vitesse supérieur alors! maintenant si on cherche "dupond" ou "dupont" la dernière lettre a changer. On écrira donc:

dupon[dt]

Les caractères que l'on met entre crochet sont facultatif. Ces crochets désigne une classe de caractères.
Maintenant si vous souhaiter mettre toutes les caractères, il est évident qu'on ne va pas s'amuser a tous les taper! On va utiliser pour ça les plages de caractères!

[a-z]

qui désigne toutes les lettre de l'alphabet mais attention en minuscule! C'est identique pour les chiffres.
Maintenant admettons qu'on ne veuille pas de chiffre! Alors là plutôt que de taper

[a-zA-Z]

on mettra plutôt

[^0-9]

Note: l'accent circonflexe dans une classe de caractère désigne une négation et non plus le début d'une chaîne. Il faudrait donc taper:

^[^0-9]

Début et fin d'une chaîne

Ça va vous suivez? Ok alors on continue. maintenant on souhaite trouver 'dupond' ou 'dupont' MAIS seulement début de mot! on ajoutera alors le caractère ^, en effet l'accent circonflexe permet de désigner que la chaîne de caractère doit commencer par notre motif. Ce qui nous donne...

^dupon[dt]

Idem en fin de mot, on utilise pour ce là le dollar $ que l'on met à la fin de la chaîne.

dupon[dt]$

Note:si on met ^dupon[dt]$ cela voudra dire que notre chaîne doit commencer ET finir par dupond ou dupont.

Répétition et quantification

Maintenant nous allons voir les répétitions ou quantifications. Si on veut qu'un seul caractère apparaisse une seul fois ou pas du tout (caractère optionnel) on utilisera le point d'interrogation qui rendra le caractère qui le précède optionnel.

dupon[dt]?

Dans cet exemple, dupond dupont ou dupon serons reconnu.

le signe plus quand lui signifie qu'on doit le mettre au moins une fois.
l'étoile * signifie qu'on peut la mettre 0, 1 ou plusieurs fois.

Meta caractères

Il nous reste à voir maintenant les meta caractères. Ce sont tous les caractères spéciaux que nous venons de voir, si vous voulez les reconnaître dans votre chaîne, il vous suffira de mettre un anti-slash devant comme ceci:

\?

Partie pratique

Nous souhaitons visualiser tout ce qu'il s'est passer sur le système le 23 févrivrier entre 8h et 9h. Pour cela on peut lire le fihier /var/log/messages qui englobe énormément d'informations! Tellement d'ailleur que grep va etre très utile!!!

Voici la commande que nous allons taper:

grep '^Feb 23 08' /var/log/messsages

Et voilà on a fait pas mal de tri mais après c'est à vous de voir ce que vous voulez trier...

Au fait ça voulais dire quoi ma regex au début de ce chapitre?! oui je l'ai entendu... Elle recherche une adresse e-mail oui! bien jouer! ;)

sommaire | système de fichier | droit d'accès | commandes utiles | commande grep et regex | raccourcis | serveur samba

Site perso de Nicolas VINCENT E-Mail Webmaster
Dernière modification: 11/05/2007. 1 visiteurs consultent ce site actuellement

Valid CSS! Valid HTML 4.01! logo de firefox