La commande grep permet également de rechercher des cibles prédéfinies en tant que modèles à l'aide d'expressions régulières. Ces dernières se composent de chiffres, de lettres et de caractères ayant une signification particulière pour la commande grep. Ces caractères spéciaux, appelés métacaractères, ont également une signification particulière pour le système et doivent être mis entre guillemets ou despécialisés. Lorsque vous utilisez une expression régulière grep sur une ligne de commande, vous devez l'entourer de guillemets ou despécialiser les métacaractères (tels que & ! . * $ ? ou \) à l'aide d'une barre oblique inversée (\).
$ grep '^b' list |
permet d'afficher toutes les lignes du fichier list commençant par la lettre "b."
$ grep 'b$' list |
permet d'afficher les lignes se terminant par la lettre "b". Et la commande :
$ grep '^b$' list |
permet d'afficher les lignes du fichier list dont le seul caractère est "b".
Un point (.) situé à l'intérieur d'une expression régulière permet de rechercher tout caractère unique. Ainsi, la commande :
$ grep 'an.' list |
permet de trouver tous les ensembles de trois caractères commençant par "an", y compris "rang", "année", "rangement" ou "plan" (car les espaces sont également pris en compte).
Lorsqu'un astérisque (*) est placé à la suite d'un caractère, il est interprété par la commande grep comme "zéro, une ou plusieurs occurrences de ce caractère." Lorsque l'astérisque est placé à la suite d'une expression régulière, il est interprété comme "zéro, une ou plusieurs occurrences des caractères correspondant au modèle."
Etant donné que l'astérisque comprend zéro occurrence, son utilisation n'est pas très intuitive. En effet, pour obtenir la liste des mots contenant les lettres "qu", vous pouvez utiliser la commande :
$ grep 'qu*' list |
Mais, si vous recherchez tous les mots contenant la lettre "n," vous devez taper :
$ grep 'nn*' list |
Alors que pour trouver les mots contenant le modèle "nn," il vous faudrait taper :
$ grep 'nnn*' list |
Vous pouvez lancer ces commandes pour juger du résultat obtenu.
Pour trouver zéro, une, ou plusieurs occurrences correspondant à n'importe quel caractère du fichier list, tapez :
$ grep .* list |