Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<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.


image

-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.


image

-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.


image

-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.


image

-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.


image

-n Préfixez chaque ligne correspondante avec le numéro de la ligne dans le fichier. Peut également être spécifié --line-number.


image

-h Pour les recherches multi-fichiers, supprimez la sortie des noms de fichiers. Peut également être spécifié --pas de nom de fichier.


image


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


Meilleur système d'exploitation Cloud Computing chez OnWorks :