grep
La commande grep affiche les lignes d'un fichier lorsqu'elle contiennent un élément particulier. C'est une commande très utilisée pour la manipulation de flux de texte car elle permet de filtrer les lignes contenant l'information intéressante.
Utilisation
Pour utiliser grep, il suffit de préciser la chaine de caractère qui doit correspondre sur la ligne (le motif), suivie du ou des noms de fichiers à lire.
Par exemple, voici comment afficher tout les utilisateurs qui utilisent bash comme shell par défaut:
$ grep /bin/bash /etc/passwd root:x:0:0:root:/root:/bin/bash ikipou:x:1000:1000:Benjamin Poulain:/home/ikipou:/bin/bash postgres:x:114:114:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
Cette commande affiche tout les lignes du fichier /etc/passwd qui contiennent la chaîne de caractères /bin/bash.
grep pour filtrer
Un exemple simple illustrera la commande lié par un pipe. Mon répertoire /usr/bin contient 2400 exécutable:
$ ls /usr/bin [ 411toppm 7zr 822-date a2p a2ping ... (liste très longue)
Imaginons que je désire uniquement la liste des outils Python, je peux filtrer la sortie de ls à l'aide de grep pour filtrer le mot "python":
$ ls | grep python dh_python python python2.5 python2.5-config python-config
Ceci illustre l'usage principal de grep: le filtrage des données affichée par une autre commande.
Expression régulière
Avec l'option -E, le motif est interprété comme une expression régulière.
Il existe une commande grep qui interprète systématiquement le motif comme une expression régulière: egrep. Les commande egrep et grep -E se comportent de façon identique, il s'agit d'ailleurs généralement du même exécutable.
La description du langage d'expression régulière utilisé dépasse le cadre de cette article. Néanmoins, vous pouvez toujours vous référer à la page de manuel de grep pour une description de la syntaxe.
Les options importantes
- -i, --ignore-case
- Ignore la casse du motif pour la correspondance.
- -v
- Affiche les lignes ne contenant pas le motif.
- -E, --extended-regexp
- Le motif est interprété comme une expression régulière. La commande se comporte comme egrep.
- -B N, --before-context=N
- Affiche aussi les N lignes au dessus de la correspondance.
- -A N, --after-context=N
- L'inverse de -B: affiche les N lignes après la correspondance.
Manuel
La page de manuel de grep fournit l'ensemble des options ainsi que la description de la syntaxe des expressions régulières.
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre