Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:grep [18/10/2012 03:35] smolski |
doc:systeme:grep [14/07/2014 22:36] smolski [grep] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
(//testé// - **smolski** 18/10/2012) Le retour sur le forum est ici : | (//testé// - **smolski** 18/10/2012) Le retour sur le forum est ici : | ||
- | * [[http://debian-facile.org/viewtopic.php?id=1039 | Lien vers le forum concernant ce tuto]] N'hésitez pas à y faire par de vos remarques, succès, améliorations ou échecs ! | + | * [[http://debian-facile.org/viewtopic.php?id=1039 | Lien vers le forum concernant ce tuto]] N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs ! |
* Objet : filtre grep | * Objet : filtre grep | ||
* Niveau requis : DÉBUTANT | * Niveau requis : DÉBUTANT | ||
* Commentaires : // Recherche de caractères dans des fichiers textes. // | * Commentaires : // Recherche de caractères dans des fichiers textes. // | ||
* Débutant, à savoir : | * Débutant, à savoir : | ||
- | [[manuel:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) |
- | + | ||
- | Voyez aussi là : | + | |
- | * [[http://www.ac-creteil.fr/reseaux/systemes/linux/shell-scripts/filtres.html | ac-creteil Filtres]] | + | |
- | + | ||
- | C'est des supers pour expliquer, avec des TP et tout... Merci à toute leur équipe ! | + | |
Le programme grep explore un ou une série de fichiers d'un ou plusieurs répertoires à la recherche de texte filtrés par une expression régulière donnée (//des lettres, des chiffres//... ). | Le programme grep explore un ou une série de fichiers d'un ou plusieurs répertoires à la recherche de texte filtrés par une expression régulière donnée (//des lettres, des chiffres//... ). | ||
Ligne 28: | Ligne 23: | ||
mkdir test1</code> | mkdir test1</code> | ||
- | Et créez(([[commande:cat]])) dedans un fichier **test1/essai.txt** rédigé ainsi : | + | Créez le fichier(([[:doc:systeme:touch]])) essai.txt ainsi : |
<code bash> | <code bash> | ||
- | cat > test1/essai.txt <<EOF</code> | + | touch essai.txt</code> |
+ | |||
+ | Et rédigez(([[:doc:systeme:cat]])) ce fichier **test1/essai.txt** ainsi : | ||
+ | <code bash> | ||
+ | cat > test1/essai.txt <<EOF | ||
tartempion eric | tartempion eric | ||
greg lucien | greg lucien | ||
Ligne 37: | Ligne 37: | ||
EOF</code> | EOF</code> | ||
- | Utilisez la commande [[commande:cat]] pour en vérifier le contenu : | + | Utilisez la commande [[:doc:systeme:cat]] pour en vérifier le contenu : |
- | <code bash>$ cat test1/essai.txt | + | <code bash>cat test1/essai.txt |
tartempion eric | tartempion eric | ||
Ligne 45: | Ligne 45: | ||
santiago germaine</code> | santiago germaine</code> | ||
- | Comme précédemment, créons un second répertoire nommé ''test2'' dans lequel nous créons le fichier **adresse.c** contenant les chaînes de caractères suivantes : | + | De la même façon que précédemment, créons un second répertoire nommé ''test2'' dans lequel nous créons le fichier **adresse.c** contenant les chaînes de caractères suivantes : |
- | <code bash> | + | |
- | mkdir test2</code> | + | |
<code bash> | <code bash> | ||
cat > test2/adresse.c <<EOF | cat > test2/adresse.c <<EOF | ||
Ligne 70: | Ligne 67: | ||
<note important>Si l'on omet __le nom de fichier__ à traiter, ''grep'' agit sur le fichier d'entrée (**stdin**). \\ | <note important>Si l'on omet __le nom de fichier__ à traiter, ''grep'' agit sur le fichier d'entrée (**stdin**). \\ | ||
- | Voir commande : [[command:pwd]] | + | Voir commande : [[:doc:systeme:pwd]] |
</note> | </note> | ||
Ligne 126: | Ligne 123: | ||
L'option ''-c'' ne donne que le nombre de lignes où la chaîne apparaît __sans afficher ces lignes__. | L'option ''-c'' ne donne que le nombre de lignes où la chaîne apparaît __sans afficher ces lignes__. | ||
- | ==== Expressions régulières ==== | + | ===option -m === |
+ | L'option ''-m N occurrence'' : permet d'arrêter de lire un fichier après avoir trouvé N ligne(s) avec occurrence. | ||
+ | |||
+ | ==== Expressions rationnelles ==== | ||
- | Les expressions régulières, ou [[regexp]], peuvent remplacer la chaîne de caractères dans l'argument du programme grep. | + | Les expressions rationnelles, ou [[:doc:programmation:shell:regexp]], peuvent remplacer la chaîne de caractères dans l'argument du programme grep. |
Voici des exemples : | Voici des exemples : | ||
Ligne 142: | Ligne 142: | ||
**Nota :** | **Nota :** | ||
- | Programme grep avec expressions régulières : | + | Programme grep avec expressions rationnelles : |
Il faut toutefois prendre un soin particulier lorsque l'on utilise les caractères spéciaux : \\ | Il faut toutefois prendre un soin particulier lorsque l'on utilise les caractères spéciaux : \\ | ||
Ligne 152: | Ligne 152: | ||
<code>test1/essai.txt:2:tartempion eric</code> | <code>test1/essai.txt:2:tartempion eric</code> | ||
- | Notez que les champs des lignes produites par ''grep'' (le nom du fichier, le numéro de ligne et la ligne elle-même) sont délimitées par des deux points "**:**", ce qui leur permet d'être traités à postériori par le programme awk dans des [[manuel:pipe | TUBES]]. | + | Notez que les champs des lignes produites par ''grep'' (le nom du fichier, le numéro de ligne et la ligne elle-même) sont délimitées par des deux points "**:**", ce qui leur permet d'être traités à postériori par le programme awk dans des [[:doc:programmation:shell:pipe | TUBES]]. |
Pour plus d'information sur la commande grep, lancez : | Pour plus d'information sur la commande grep, lancez : | ||
$ man grep. | $ man grep. |