Commande grep sur Linux, expression régulière

Quand on travaille sous Linux, il est fréquent de manipuler des fichiers volumineux ou d’analyser des sorties de commandes complexes. Que ce soit pour lire des fichiers de logs, extraire une information précise ou faire du tri dans des fichiers de configuration, il faut un outil rapide, puissant et flexible.

Le nom grep est l’acronyme de Global Regular Expression Print. Il est disponible par défaut sur toutes les distributions Linux.

PRISE EN MAIN DE GREP

Syntaxe générale

grep [options] [motif] [fichier...]
  • motif : le texte ou l’expression régulière à rechercher.
  • fichier : un ou plusieurs fichiers dans lesquels effectuer la recherche.
  • Si aucun fichier n’est précisé, grep lit l’entrée standard (utile avec un pipe |).

Rechercher une chaîne de caractères dans un fichier

grep root /etc/passwd

Cette commande affiche toutes les lignes du fichier /etc/passwd contenant le mot root. Très utile pour identifier les comptes système ou les utilisateurs ayant des privilèges élevés.

Ignorer la casse (-i)

grep -i ubuntu /etc/os-release

L’option -i permet d’ignorer les majuscules/minuscules. Ici, qu’on cherche « Ubuntu », « ubuntu » ou « UBUNTU », tout sera trouvé.

Afficher les numéros de ligne (-n)

grep -n bash /etc/passwd

Affiche les lignes contenant le mot “bash” avec leurs numéros. Pratique pour situer rapidement l’information dans un fichier.

Compter les lignes correspondantes (-c)

grep -c /bin/bash /etc/passwd

Renvoie uniquement le nombre de lignes qui correspondent au motif. Idéal pour avoir une vue d’ensemble sans afficher les résultats.

Afficher seulement le motif (-o)

grep -o 'error' /var/log/syslog

Affiche uniquement les mots « error » trouvés dans le fichier, ligne par ligne, sans le reste du contenu. Très utile avec des expressions régulières pour extraire des données précises (comme des IP ou des ports).

Exclure certaines lignes (-v)

grep -v '^#' /etc/fstab

Affiche toutes les lignes qui ne commencent pas par # (donc qui ne sont pas des commentaires). Combiné avec -E, on peut aussi supprimer les lignes vides :

grep -Ev '(^#|^$)' /etc/fstab

Résultat : uniquement les lignes « actives ».

Recherche récursive dans un dossier (-r)

grep -r Listen /etc/apache2/

Parcourt tous les fichiers et sous-dossiers du dossier donné à la recherche du mot “Listen”. Utile pour fouiller dans une arborescence.

Rechercher dans des fichiers compressés

Si vous avez des fichiers .gz, .bz2 ou .xz, utilisez les variantes :

zgrep erreur fichier.log.gz
bzgrep erreur fichier.log.bz2
xzgrep erreur fichier.log.xz

Expressions régulières complexes (-E)

grep -E '^(UUID|/)' /etc/fstab

Ce motif affichera les lignes commençant par UUID ou par /. L’option -E permet d’utiliser des regex étendues (comme les groupes, les alternatives |, etc.).

EXEMPLES CONCRETS

Trouver tous les utilisateurs avec le shell /bin/bash

grep '/bin/bash' /etc/passwd

Cela permet d’afficher uniquement les comptes utilisateurs ayant un accès interactif à un terminal.

Extraire les adresses IP d’un fichier

grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' /etc/hosts

Extrait uniquement les adresses IPv4. L’option -o affiche uniquement les correspondances, et la regex capture le format standard d’une IPv4.

Rechercher un mot-clé dans tous les fichiers .conf

grep -r "Port" /etc/ssh/*.conf

Affiche toutes les lignes contenant « Port » dans les fichiers .conf du répertoire SSH.

COMBINER GREP AVEC D’AUTRES OUTILS

Exemple avec lspci

lspci | grep Ethernet

Affiche uniquement les périphériques réseau de type Ethernet.

Exemple avec ip a pour les IP

ip a | grep inet

Permet de récupérer toutes les lignes contenant les adresses IP (v4 ou v6) associées aux interfaces réseau.

Exemple avec journalctl (logs système)

journalctl -xe | grep ssh

Filtre les journaux système en ne gardant que les événements liés au service SSH.

CONCLUSION

La commande grep sous Linux est bien plus qu’un simple outil de recherche : c’est un véritable assistant d’analyse pour tous les fichiers textes du système. Elle permet de gagner un temps considérable, surtout lorsqu’on l’associe à d’autres commandes ou qu’on exploite la puissance des expressions régulières.

En maîtrisant grep, vous faites un pas important vers une utilisation efficace de la ligne de commande Linux, que ce soit pour l’administration système, le développement ou l’analyse de logs.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *