0 Votes

Code source wiki de grep

Modifié par john le 2026/09/20 20:13

Masquer les derniers auteurs
john 1.1 1 {{toc/}}
2
3 == Présentation ==
john 2.1 4
john 3.1 5 La commande ##grep## (Global Regular Expression Print) permet de **rechercher des chaînes de caractères dans des fichiers** ou en sortie de commande.
john 1.1 6
7 C’est l’outil idéal pour filtrer, explorer, et déboguer du texte dans le terminal.
8
john 3.1 9 ----
john 1.1 10
11 == Syntaxe de base ==
john 2.1 12
john 1.1 13 {{code language="bash"}}
14 grep "motif" fichier.txt
15 {{/code}}
16
john 3.1 17 ----
john 1.1 18
19 == Exemples simples ==
john 2.1 20
john 3.1 21 Rechercher une ligne contenant ##ssh## :
john 1.1 22
john 3.1 23 {{code language="bash"}}
24 grep ssh /var/log/auth.log
25 {{/code}}
john 1.1 26
john 3.1 27 Afficher les lignes contenant ##root## dans un fichier :
john 1.1 28
john 3.1 29 {{code language="bash"}}
30 grep root /etc/passwd
31 {{/code}}
32
33 ----
34
john 1.1 35 == Options courantes ==
36
john 3.1 37 |=Option|=Description
38 |##-i##|Ignore la casse
39 |##-n##|Affiche le **numéro de ligne**
40 |##-r## ou ##-R##|Recherche **récursive** dans les dossiers
41 |##-l##|Affiche seulement les **noms de fichiers** contenant le motif
42 |##-L##|Affiche les fichiers **ne contenant pas** le motif
43 |##-v##|Affiche tout **sauf** les lignes contenant le motif
44 |##-c##|Compte les lignes correspondantes
45 |##-w##|Cherche le **mot entier**
46 |##-A n## / ##-B n## / ##-C n##|Affiche n lignes **après**, **avant**, ou **autour**
47 |##--color=auto##|Colore les correspondances
48 |##-e##|Permet de spécifier plusieurs motifs
49 |##-E##|Active les **expressions régulières étendues**
50 |##-F##|Traite le motif comme du texte brut, sans expression régulière
john 1.1 51
john 3.1 52 ----
john 2.1 53
john 1.1 54 == Recherche récursive ==
john 2.1 55
john 1.1 56 {{code language="bash"}}
57 grep -rn "motif" /etc
58 {{/code}}
59
john 3.1 60 Affiche les fichiers, numéros de lignes, et lignes contenant le motif dans tout ##/etc##.
john 1.1 61
john 3.1 62 ----
john 1.1 63
64 == Recherche insensible à la casse ==
john 2.1 65
john 1.1 66 {{code language="bash"}}
67 grep -i "linux" fichier.txt
68 {{/code}}
69
john 3.1 70 ----
john 1.1 71
72 == Exclusion de motif ==
john 2.1 73
john 1.1 74 {{code language="bash"}}
75 grep -v "erreur" journal.log
76 {{/code}}
77
john 3.1 78 Affiche toutes les lignes **ne contenant pas** le mot « erreur ».
john 1.1 79
john 3.1 80 ----
john 1.1 81
john 3.1 82 == grep avec des tubes ==
john 2.1 83
john 1.1 84 {{code language="bash"}}
85 ps aux | grep nginx
86 {{/code}}
87
john 3.1 88 Permet de filtrer une sortie de commande. Le ##grep## lui-même apparaît dans le résultat ; pour l'éviter :
john 1.1 89
john 3.1 90 {{code language="bash"}}
91 ps aux | grep -v grep | grep nginx
92 # ou
93 pgrep -a nginx
94 {{/code}}
john 1.1 95
john 3.1 96 ----
john 2.1 97
john 3.1 98 == grep et les expressions régulières ==
99
100 Les caractères ##+##, ##?##, ##|##, ##(## et ##)## ne sont reconnus qu'avec ##-E## :
101
john 1.1 102 {{code language="bash"}}
john 3.1 103 grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" fichier.txt
john 1.1 104 {{/code}}
105
john 3.1 106 Extrait les lignes contenant une adresse de courriel (version simplifiée).
john 1.1 107
john 3.1 108 Quelques motifs utiles :
john 1.1 109
john 3.1 110 |=Motif|=Sens
111 |##^mot##|Ligne commençant par « mot »
112 |##mot$##|Ligne finissant par « mot »
113 |##^$##|Ligne vide
114 |##[0-9]{3}##|Trois chiffres (avec ##-E##)
john 2.1 115
john 3.1 116 ----
john 1.1 117
john 3.1 118 == Astuce grep et find ==
john 1.1 119
john 3.1 120 Rechercher un motif dans tous les fichiers ##.log## :
121
122 {{code language="bash"}}
123 grep -rn --include="*.log" "erreur" .
124 # ou
125 find . -name "*.log" -exec grep -Hn "erreur" {} +
126 {{/code}}
127
128 La première forme est plus rapide ; la seconde reste utile quand il faut d'autres critères de ##find##.
129
130 ----
131
john 1.1 132 == Liens internes ==
john 2.1 133
john 3.1 134 * [[Retour à la section Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]]