Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/08/2007, 14h19   #1
Invité de passage
 
Inscription : août 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 11
Points : 1
Points : 1
Par défaut rechercher une chaine exacte

bonjour,

Je souhaiterais savoir s'il existe une commande (type grep) avec une option particulière peut-être, afin de rechercher une chaine exacte dans une liste

Si j'ai un fichier qui contient :

toto
toto1
toto2 ...

et que je fais un grep de toto, le shell va me retourner

toto
toto1
toto2

Mais ce que je voudrais c'est qu'il me retourne uniquement par exemple "toto":
Comment faire cela ?

Merci
ybalauze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 14h23   #2
Invité de passage
 
Inscription : août 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 11
Points : 1
Points : 1
Par défaut je repond à ma propre question

grep ^toto$

désolé
ybalauze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 16h15   #3
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Ta solution ne tiens compte que des lignes qui sont "exactement" ta chaine recherchée donc je lui aurais préféré


grep -E "toto "


Qui va rechercher tout les toto avec un espace après
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 16h19   #4
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 499
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 499
Points : 9 685
Points : 9 685
Bonjour

Le problème ne se situe pas forcément où tu crois : Qu'appelles-tu "chaîne exacte" ?

Est-ce que "toto\n" est correcte pour toi ? Et "toto." ? ....

Une fois que tu auras défini les séparateurs, alors il te suffit de faire un grep avec les expressions régulières (donc un egrep).

Exemple :
Code :
egrep "essai[ \t\n]+"  mon_ficheir_a_parser
Cet exemple te sort toutes les lignes contenant la chaine essai suivie par un espace, une tabulation ou un retour à la ligne.
Mais elle n'affiche pas les lignes contenant essai2

En revanche, elle ne se préoccupe que de ce qui suit la chaine "essai". A toi de chercher comment faire pour mettre également des contraintes sur ce qu'il y a avant (il y a une petite subtilité avec le début de ligne).
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 20h30   #5
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Citation:
Envoyé par ybalauze
bonjour,

Je souhaiterais savoir s'il existe une commande (type grep) avec une option particulière peut-être, afin de rechercher une chaine exacte dans une liste
Possibilités :

1._ Sur le mot ( word ) :
grep -E -w toto fichier.txt

-w, --word-regexp
Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or pre-
ceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-con-
stituent characters are letters, digits, and the underscore.
ou autre syntaxe, chaîne commençant par toto et finissant par toto (équivaut à l'option -w)

grep -E '\<toto\>' fichier.txt
2._ Sur une chaîne commençant par toto....
grep -E '\<toto' fichier.txt
3._ Sur une chaîne finissant par ....toto
grep -E 'toto\>' fichier.txt

Exemple

fichier.txt :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
toto
toto,
toto:
toto1
1toto
2toto2
 toto
toto 
 toto 
.toto.
-toto-
<tab>toto
<tab>toto
toto
blabla.toto
toto.blabla
blabla.toto.blabla

$ grep -E '\<toto' toto.txt

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
toto
toto,
toto:
toto1
 toto
toto 
 toto 
.toto.
-toto-
        toto
        toto
toto
blabla.toto
toto.blabla
blabla.toto.blabla
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h53.


 
 
 
 
Partenaires

Hébergement Web