informatique télécharger logiciel gratuit jeu pc gratuit jeu flash gratuit

Forum - chat - échantillons gratuits - cadeau gratuit - réduction et bon d'achat - voyage pas cher séjour

Rubriques Documentation Linux

grattage gratuit
loterie gratuite
casino gratuit
quizz gratuit
pari gratuit
jeu de pronostic
tirage au sort
jeux de hasard
tombola gratuite
jeux en flash
jeu en réseau
jeu de stratégie
jeux TV
multi jeux
concours gratuit

grep voir les exemples

La commande grep permet de rechercher du texte dans un fichier. Ses nombreuses options permettent d'effectuer des recherches complexes portant sur des chaînes spécifiques ou correspondant à des critères multiples. Il est possible d'utiliser les métacaractères ainsi que de définir des classes de caractères. Il est nécessaire d'indiquer le fichier sur lequel la recherche doit porter. La syntaxe la plus simple de la commande grep est la suivante :

 grep chaîne fichier(s)

Si grep effectue la recherche dans un seul fichier, les lignes dans lesquelles la chaîne est trouvée sont affichées. Si la recherche est effectuée dans plusieurs fichiers, les noms des fichiers concernés sont également affichés.
Dans la chaîne recherchée, un point (.) correspond à n'importe quel caractère, comme le point d'interrogation utilisé pour les noms de ficniers. Par exemple, grep . s liste trouve toutes les lignes dans lesquelles la lettre s est précédée d'un caractère quelconque.L'équivalent de l'astérisque dans les recherches de noms de fichiers est un point suivi d'un astérisque (. *). Ainsi, grep 'linu. *' fichier.txt trouve tous les mots du fichier lettre contenant la lettre linu. Notez que les lettres linu et le caractère * doivent être placés entre apostrophes. 

Un accent circonflexe (^) indique que la chaîne recherchée doit se trouver en début de ligne. La commande grep ^c trouve toutes les lignes commençant par la lettre c. De la même façon, le caractère [cr@localhost /cr]# indique que la chaîne doit se trouver en fin de ligne. La commande grep s[cr@localhost /cr]# doc.txt trouve toutes les lignes du fichier doc.txt se terminant par la lettre s. La commande grep -c[cr@localhost /cr]# liste trouve toutes les lignes ne comportant que la lettre c pour seul caractère.

Le principe est la définition de motifs de recherche et la combinaison de ceux-ci pour exprimer des conditions complexes. (caractères joker, duplication, négation, relation OU, choix multiple, ...).

Voir ci-dessous une liste d'exemples expliqués. Le flot d'entrée signifie : une ligne du fichier d'entrée. Bien entendu, tous les motifs peuvent être combinés à loisir.

Types d'expressions régulières
abc La chaîne de caractères abc, n'importe où dans le flot d'entrée
a.c La lettre a séparée de la lettre c par n'importe quoi, n'importe où dans le flot d'entrée
^abc La chaîne abc au début d'une ligne du flot d'entrée
abc[cr@localhost /cr]# La chaîne abc à la fin d'une ligne du flot d'entrée
[abc] Une des lettres a, b ou c, n'importe où dans le flot d'entrée
[^abc] Aucune des lettres a, b ou c, n'importe où dans le flot d'entrée
[a-f] Une des lettres a, b, c, d, e ou f, n'importe où dans le flot d'entrée
ABC | XYZ Une des chaînes ABC ou XYZ, n'importe où dans le flot d'entrée
[:digit:] Motif spécial, équivalent de [0123456789] : un chiffre, n'importe où dans le flot d'entrée
(ab){3}c La chaîne ab, multipliée 3 fois, suivie de la lettre c, n'importe où dans le flot d'entrée, équivalent de abababc
[A-Z][:digit:] Une lettre majuscule, suivie d'un chiffre, n'importe où dans le flot d'entrée.

Les plus utiles de ces options sont :Option signification-v Affichage des lignes ne contenant pas la chaîne indiquée. -l Affichage uniquement du nom des fichiers contenant la chaîne recherchée. Les lignes ne sont pas affichées.   -c Affichage du nombre de lignes contenant la chaîne recherchée. Si plusieurs fichiers sont concernés, grep affiche le nom de chaque fichier suivi du nombre de lignes contenant la chaîne. 

Options significations
  ^ Début d'une ligne
°
N'importe quel caractère.
[] N'importe quel caractère se trouvant dans la liste entre crochets.
[^] N'importe quel caractère à l'exception de ceux figurant dans la liste entre crochets.
* Le caractère ou l'expression précédent
.*
N'importe quels caractères.
\ le caractère suivant est traité comme une caractère normal et nom comme un métacaractère.
# Fin d'une ligne de texte.
Cette liste n'est pas exhaustive : on peut la compléter en lisant l'aide de grep ou d'un autre outil utilisant les expressions régulières.

Exemples :
[cr@localhost Documents]$ cat fichier3.txt
bellecellebelaelle
sellellelleselle
c1c2c3c4c
d1d2d3d4d
cdcdccdcd
la selle de belle
aedreaxya
aedrecdcd
[cr@localhost Documents]$

grep [as]elle fichier3.txt recherche les occurrences aelle et selle.
[cr@localhost Documents]$ grep [as]elle fichier3.txt
bellecellebelaelle
sellellelleselle
la selle de belle
[cr@localhost Documents]$


[cr@localhost Documents]$ cat fichier3.txt
aelle
belle
celle
delle
selle
pelle
relle
melle
[cr@localhost Documents]$

grep [as]elle fichier3.txt recherche les occurrences aelle et selle
[cr@localhost Documents]$ grep [as]elle fichier3.txt
aelle
selle
[cr@localhost Documents]$

grep [a-d]elle fichier3.txt recherche les occurrences aelle,belle,celle et delle
[cr@localhost Documents]$ grep [a-d]elle fichier3.txt
aelle
belle
celle
delle

grep [a-d,s]elle fichier3.txt recherche les occurrences aelle,belle,celle,delle et selle
[cr@localhost Documents]$ grep [a-d,s]elle fichier3.txt
aelle
belle
celle
delle
selle
[cr@localhost Documents]$

[cr@localhost Documents]$ cat fichier3.txt
aelle aelle
belle belle
celle celle
belle delle
selle selle
belle pelle
belle relle
melle melle
[cr@localhost Documents]$

Renvoie les lignes contenant une chaîne terminée par elle et dont le dernier mot mot ne commence pas par b.
[cr@localhost Documents]$ cat fichier3.txt
aelle aelle
selle belle
celle celle
belle delle
selle belle
belle pelle
relle belle
melle melle
[cr@localhost Documents]$

Renvoie les lignes contenant une chaîne terminée par elle et qui ne commence pas par belle.
[cr@localhost Documents]$ grep [^b]elle fichier3.txt
aelle aelle
selle belle
celle celle
belle delle
selle belle
belle pelle
relle belle
melle melle
[cr@localhost Documents]$

[cr@localhost Documents]$ grep [^b-c]elle fichier3.txt
aelle aelle
selle belle
belle delle
selle belle
belle pelle
relle belle
melle melle
[cr@localhost Documents]$

[cr@localhost Documents]$ cat fichier4.txt
a.b[1]= vrai
b.a[1]= faux
c.b[0]= vrai
a.b[2]= faux
a.b[0]= vrai
a.b.c.d
a=b=c=d
a-b-c-d
a*b*c*d
[cr@localhost Documents]$

La sortie affichera les lignes commençant par belle,ici il n'y a pas de crochets, dans ce cas ce n'est pas une négation.
[cr@localhost Documents]$ grep ^belle fichier4.txt
belle delle
belle pelle
[cr@localhost Documents]$


Il peut y avoir des caractère particuliers du type : , ; [,],\=, dans ce cas il faut les précéder du caractère \.Ces caractères doivent être précédés de l'anti-slash ("\") obligatoire pour éliminer leur propriété de substitution.
Cest-à-dire qu'il ne soit pas interprèter mais considérer comme de simple un caractère.

[cr@localhost Documents]$ grep "a\.b" fichier4.txt
a.b[1]= vrai
a.b[2]= faux
a.b[0]= vrai
a.b.c.d


Sans l'antislash ! attention ! le point remplace alors un caractère quelconque !
[cr@localhost Documents]$ grep "a.b" fichier4.txt
a.b[1]= vrai
a.b[2]= faux
a.b[0]= vrai
a.b.c.d
a=b=c=d
a-b-c-d
a*b*c*d
[cr@localhost Documents]$

[cr@localhost Documents]$ grep "a.b[" fichier4.txt
grep: Invalid regular expression
[cr@localhost Documents]$ grep "a.b\[" fichier4.txt
a.b[1]= vrai
a.b[2]= faux
a.b[0]= vrai
[cr@localhost Documents]$

On cherche les chaines commançant par a. L'option n pour numéroter les lignes
[cr@localhost Documents]$ grep -n '^a\.' fichier3.txt
1:a.b[1]= vrai
4:a.b[2]= faux
5:a.b[0]= vrai
6:a.b.c.d
[cr@localhost Documents]

[cr@localhost Documents]$ cat fichier1.txt
a:b:c:d:e
a/b/c/d/e
a=b=c=d=e
a*b*c*d*e
a:b:c:d:e

[cr@localhost Documents]$ grep -n '^a.*$' fichier1.txt
1:a:b:c:d:e
2:a/b/c/d/e
3:a=b=c=d=e
4:a*b*c*d*e
5:a:b:c:d:e
[cr@localhost Documents]$

Remarque : Les caractères ! , $, ?, ., ; & et \ doivent être précédés d'une barre oblique inverse s'ils doivent être traités comme des caractères ordinaires.

grep --help : pour avoir toutes les options

Copyright © 2004 par Rachid CHOUCHI pour fichepratique.com