0 Votes

Modifications pour le document grep

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

Depuis la version 1.1
modifié par john
sur 2025/05/24 23:47
Commentaire de modification : Imported from XAR
À la version 3.1
modifié par john
sur 2026/09/20 20:13
Commentaire de modification : Il n'y a aucun commentaire pour cette version

Résumé

Détails

Propriétés de la Page
Titre
... ... @@ -1,1 +1,1 @@
1 -Grep
1 +grep
Contenu
... ... @@ -1,98 +3,134 @@
1 -= grep et ses options =
2 -
3 3  {{toc/}}
4 4  
5 5  == Présentation ==
6 -La commande `grep` (Global Regular Expression Print) permet de **rechercher des chaînes de caractères dans des fichiers** ou en sortie de commande.
7 7  
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 +
8 8  C’est l’outil idéal pour filtrer, explorer, et déboguer du texte dans le terminal.
9 9  
10 ----
9 +----
11 11  
12 12  == Syntaxe de base ==
12 +
13 13  {{code language="bash"}}
14 14  grep "motif" fichier.txt
15 15  {{/code}}
16 16  
17 ----
17 +----
18 18  
19 19  == Exemples simples ==
20 -Rechercher une ligne contenant `ssh` :
20 +
21 +Rechercher une ligne contenant ##ssh## :
22 +
21 21  {{code language="bash"}}
22 22  grep ssh /var/log/auth.log
23 23  {{/code}}
24 24  
25 -Afficher les lignes contenant "root" dans un fichier :
27 +Afficher les lignes contenant ##root## dans un fichier :
28 +
26 26  {{code language="bash"}}
27 27  grep root /etc/passwd
28 28  {{/code}}
29 29  
30 ----
33 +----
31 31  
32 32  == Options courantes ==
33 -|= Option |= Description |
34 -| `-i` | Ignore la casse (maj/min) |
35 -| `-n` | Affiche le **numéro de ligne** |
36 -| `-r` ou `-R` | Recherche **récursive** dans les dossiers |
37 -| `-l` | Affiche seulement les **noms de fichiers** contenant le motif |
38 -| `-v` | Affiche tout **sauf** les lignes contenant le motif |
39 -| `--color=auto` | Colore les correspondances dans la sortie |
40 -| `-e` | Permet de spécifier plusieurs motifs |
41 -| `-E` | Active les **expressions régulières étendues** (`egrep`) |
42 42  
43 ----
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
44 44  
52 +----
53 +
45 45  == Recherche récursive ==
55 +
46 46  {{code language="bash"}}
47 47  grep -rn "motif" /etc
48 48  {{/code}}
49 49  
50 -Cela affiche les fichiers, numéros de lignes, et lignes contenant le motif dans tout `/etc`.
60 +Affiche les fichiers, numéros de lignes, et lignes contenant le motif dans tout ##/etc##.
51 51  
52 ----
62 +----
53 53  
54 54  == Recherche insensible à la casse ==
65 +
55 55  {{code language="bash"}}
56 56  grep -i "linux" fichier.txt
57 57  {{/code}}
58 58  
59 ----
70 +----
60 60  
61 61  == Exclusion de motif ==
73 +
62 62  {{code language="bash"}}
63 63  grep -v "erreur" journal.log
64 64  {{/code}}
65 65  
66 -Affiche toutes les lignes **ne contenant pas** le mot "erreur".
78 +Affiche toutes les lignes **ne contenant pas** le mot « erreur ».
67 67  
68 ----
80 +----
69 69  
70 -== Grep avec pipes ==
82 +== grep avec des tubes ==
83 +
71 71  {{code language="bash"}}
72 72  ps aux | grep nginx
73 73  {{/code}}
74 74  
75 -Permet de filtrer une sortie de commande.
88 +Permet de filtrer une sortie de commande. Le ##grep## lui-même apparaît dans le résultat ; pour l'éviter :
76 76  
77 ----
90 +{{code language="bash"}}
91 +ps aux | grep -v grep | grep nginx
92 +# ou
93 +pgrep -a nginx
94 +{{/code}}
78 78  
79 -== grep + regex ==
96 +----
97 +
98 +== grep et les expressions régulières ==
99 +
100 +Les caractères ##+##, ##?##, ##|##, ##(## et ##)## ne sont reconnus qu'avec ##-E## :
101 +
80 80  {{code language="bash"}}
81 -grep "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+" fichier.txt
103 +grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" fichier.txt
82 82  {{/code}}
83 83  
84 -Extrait les lignes contenant des adresses email (simplifié).
106 +Extrait les lignes contenant une adresse de courriel (version simplifiée).
85 85  
86 ----
108 +Quelques motifs utiles :
87 87  
88 -== Astuce grep + find ==
89 -Pour rechercher un motif dans tous les fichiers `.log` :
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 +
90 90  {{code language="bash"}}
91 -find . -name "*.log" -exec grep -H "erreur" {} \;
123 +grep -rn --include="*.log" "erreur" .
124 +# ou
125 +find . -name "*.log" -exec grep -Hn "erreur" {} +
92 92  {{/code}}
93 93  
94 ----
128 +La première forme est plus rapide ; la seconde reste utile quand il faut d'autres critères de ##find##.
95 95  
130 +----
131 +
96 96  == Liens internes ==
97 -* [[Retour à la section Tutos Linux>>Wiki Batcave John.TutosLinux]]
98 98  
134 +* [[Retour à la section Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]]