<Précédent | Table des matières | Suivant>
Ancres
Le caret (^) et le signe dollar ($) les caractères sont traités comme ancres dans les expressions régulières. Cela signifie qu'ils provoquent la correspondance uniquement si l'expression régulière est trouvée au début de la ligne (^) ou en fin de ligne ($):
[moi@linuxbox ~]$ grep -h '^zip' dirlist*.txt
zip zipcloak zipgrep zipinfo zipnote zipsplit
[moi@linuxbox ~]$ grep -h 'zip$' dirlist*.txt
gunzip gzip funzip gpg-zip preunzip preunzip unzip zip
[moi@linuxbox ~]$ grep -h '^zip$' dirlist*.txt
Zip *: français
[moi@linuxbox ~]$ grep -h '^zip' dirlist*.txt
zip zipcloak zipgrep zipinfo zipnote zipsplit
[moi@linuxbox ~]$ grep -h 'zip$' dirlist*.txt
gunzip gzip funzip gpg-zip preunzip preunzip unzip zip
[moi@linuxbox ~]$ grep -h '^zip$' dirlist*.txt
Zip *: français
Ici, nous avons recherché dans la liste des fichiers la chaîne « zip » située au début de la ligne, à la fin de la ligne et sur une ligne où elle se trouve à la fois au début et à la fin de la ligne (c'est-à-dire seule sur la ligne). Notez que l'expression régulière '^$' (un début et une fin sans rien entre les deux) correspondra aux lignes vides.
Un assistant de mots croisés
Même avec notre connaissance limitée des expressions régulières à ce stade, nous pouvons faire quelque chose d'utile.
Ma femme adore les mots croisés et elle me demande parfois de l'aide pour une question particulière. Quelque chose comme « Qu'est-ce qu'un mot de cinq lettres dont la troisième lettre est 'j' et la dernière lettre est 'r' qui signifie... ? » Ce genre de question m'a fait réfléchir.
Saviez-vous que votre système Linux contient un dictionnaire ? Cela fait. Jetez un œil dans le /usr/share/dict répertoire et vous pourriez en trouver un, ou plusieurs. Les fichiers de dictionnaire qui s'y trouvent ne sont que de longues listes de mots, un par ligne, classés par ordre alphabétique. Sur mon système, le des mots le fichier contient un peu plus de 98,500 XNUMX
mots. Pour trouver des réponses possibles à la question des mots croisés ci-dessus, nous pourrions faire ceci :
[moi@linuxbox ~]$ grep -i '^..jr$' /usr/share/dict/words
Majeure majeure
En utilisant cette expression régulière, nous pouvons trouver tous les mots dans notre fichier de dictionnaire qui sont longs de cinq lettres et ont un « j » en troisième position et un « r » en dernière position.