0 Votes

Code source wiki de grep

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

Afficher les derniers auteurs
1 {{toc/}}
2
3 == Présentation ==
4
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.
6
7 C’est l’outil idéal pour filtrer, explorer, et déboguer du texte dans le terminal.
8
9 ----
10
11 == Syntaxe de base ==
12
13 {{code language="bash"}}
14 grep "motif" fichier.txt
15 {{/code}}
16
17 ----
18
19 == Exemples simples ==
20
21 Rechercher une ligne contenant ##ssh## :
22
23 {{code language="bash"}}
24 grep ssh /var/log/auth.log
25 {{/code}}
26
27 Afficher les lignes contenant ##root## dans un fichier :
28
29 {{code language="bash"}}
30 grep root /etc/passwd
31 {{/code}}
32
33 ----
34
35 == Options courantes ==
36
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
51
52 ----
53
54 == Recherche récursive ==
55
56 {{code language="bash"}}
57 grep -rn "motif" /etc
58 {{/code}}
59
60 Affiche les fichiers, numéros de lignes, et lignes contenant le motif dans tout ##/etc##.
61
62 ----
63
64 == Recherche insensible à la casse ==
65
66 {{code language="bash"}}
67 grep -i "linux" fichier.txt
68 {{/code}}
69
70 ----
71
72 == Exclusion de motif ==
73
74 {{code language="bash"}}
75 grep -v "erreur" journal.log
76 {{/code}}
77
78 Affiche toutes les lignes **ne contenant pas** le mot « erreur ».
79
80 ----
81
82 == grep avec des tubes ==
83
84 {{code language="bash"}}
85 ps aux | grep nginx
86 {{/code}}
87
88 Permet de filtrer une sortie de commande. Le ##grep## lui-même apparaît dans le résultat ; pour l'éviter :
89
90 {{code language="bash"}}
91 ps aux | grep -v grep | grep nginx
92 # ou
93 pgrep -a nginx
94 {{/code}}
95
96 ----
97
98 == grep et les expressions régulières ==
99
100 Les caractères ##+##, ##?##, ##|##, ##(## et ##)## ne sont reconnus qu'avec ##-E## :
101
102 {{code language="bash"}}
103 grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" fichier.txt
104 {{/code}}
105
106 Extrait les lignes contenant une adresse de courriel (version simplifiée).
107
108 Quelques motifs utiles :
109
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##)
115
116 ----
117
118 == Astuce grep et find ==
119
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
132 == Liens internes ==
133
134 * [[Retour à la section Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]]