<Précédent | Table des matières | Suivant>
grep
Le programme principal que nous utiliserons pour travailler avec des expressions régulières est notre vieux copain, grep. Le nom "grep" est en fait dérivé de l'expression "impression d'expression régulière globale", donc nous pouvons voir que grep a quelque chose à voir avec les expressions régulières. En substance, grep recherche dans les fichiers texte le texte d'occurrence correspondant à une expression régulière spécifiée et affiche toute ligne contenant une correspondance vers la sortie standard.
Jusqu'à présent, nous avons utilisé grep avec des chaînes fixes, comme ceci :
[moi@linuxbox ~]$ ls /usr/bin | grep zip
[moi@linuxbox ~]$ ls /usr/bin | grep zip
Cela listera tous les fichiers dans le / usr / bin répertoire dont les noms contiennent la sous-chaîne « zip ».
La grep le programme accepte les options et les arguments de cette façon :
grep[Options] regex [fichier...]
De regex est une expression régulière.
Voici une liste des produits couramment utilisés grep options:
Tableau 19-1 : Options grep
Description des options
Description des options
-i Ignorer la casse. Ne faites pas la distinction entre les majuscules et les minuscules. Peut également être spécifié --ignore-cas.
-v Inverser la correspondance. Normalement, grep imprime les lignes qui contiennent une correspondance.
Cette option provoque grep pour imprimer chaque ligne qui ne contient pas de correspondance. Peut également être spécifié --inverser la correspondance.
-c Imprimer le nombre de correspondances (ou de non-correspondances si le -v option est également spécifiée) au lieu des lignes elles-mêmes. Peut également être spécifié --compter.
-l Imprimez le nom de chaque fichier qui contient une correspondance au lieu des lignes elles-mêmes. Peut également être spécifié --files-with-matchs.
-L Comme l'option -l, mais n'affiche que les noms des fichiers qui ne contiennent pas de correspondance. Peut également être spécifié --files-without-match.
-n Préfixez chaque ligne correspondante avec le numéro de la ligne dans le fichier. Peut également être spécifié --line-number.
-h Pour les recherches multi-fichiers, supprimez la sortie des noms de fichiers. Peut également être spécifié --pas de nom de fichier.
Afin d'explorer plus en profondeur grep, créons des fichiers texte à rechercher :
grep
[moi@linuxbox ~]$ ls /bin > dirlist-bin.txt [moi@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [moi@linuxbox ~]$ ls /sbin > dirlist-sbin.txt [moi@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [moi@linuxbox ~]$ ls liste de répertoires*.txt
répertoire-bin.txt répertoire-sbin.txt répertoire-usr-sbin.txt répertoire-usr-bin.txt
[moi@linuxbox ~]$ ls /bin > dirlist-bin.txt [moi@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [moi@linuxbox ~]$ ls /sbin > dirlist-sbin.txt [moi@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [moi@linuxbox ~]$ ls liste de répertoires*.txt
répertoire-bin.txt répertoire-sbin.txt répertoire-usr-sbin.txt répertoire-usr-bin.txt
Nous pouvons effectuer une simple recherche dans notre liste de fichiers comme ceci :
[moi@linuxbox ~]$ grep liste de répertoires bzip*.txt
répertoire-bin.txt:bzip2 répertoire-bin.txt:bzip2recover
[moi@linuxbox ~]$ grep liste de répertoires bzip*.txt
répertoire-bin.txt:bzip2 répertoire-bin.txt:bzip2recover
Dans cet exemple, grep recherche la chaîne dans tous les fichiers répertoriés bzip et trouve deux correspondances, toutes deux dans le fichier répertoire-bin.txt. Si nous étions uniquement intéressés par la liste des fichiers contenant des correspondances plutôt que par les correspondances elles-mêmes, nous pourrions spécifier le -l option:
[moi@linuxbox ~]$ grep -l liste de répertoires bzip*.txt
répertoire-bin.txt
[moi@linuxbox ~]$ grep -l liste de répertoires bzip*.txt
répertoire-bin.txt
Inversement, si nous voulions seulement voir une liste des fichiers qui ne contenaient pas de correspondance, nous pourrions faire ceci :
[moi@linuxbox ~]$ grep -L liste de répertoires bzip*.txt
répertoire-sbin.txt répertoire-usr-bin.txt répertoire-usr-sbin.txt
[moi@linuxbox ~]$ grep -L liste de répertoires bzip*.txt
répertoire-sbin.txt répertoire-usr-bin.txt répertoire-usr-sbin.txt