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