Pour les pro de grep

progfann Messages postés 365 Date d'inscription   Statut Membre Dernière intervention   -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,
comment je peux afficher un mot qui contient exactement 2 lettres 'aa'
par exemple : rata edzazara ==> il va afficher rata
merci
A voir également:

4 réponses

jivef Messages postés 927 Date d'inscription   Statut Membre Dernière intervention   306
 
Bonjour,
question un peu compliquée, mais néanmoins amusante


cat list | grep "^[^a]*a[^a]*a[^a]$"

(list etant le fichier contenant ce que tu cherches)

J'ai testé et apparemment c'est bon.
Tiens moi au courant.

A bientux.

Jonas.
0
jivef Messages postés 927 Date d'inscription   Statut Membre Dernière intervention   306
 
Rebonjour,
Je viens de m'apercevoir que je n'ai pas répondu correctement à la question.

debian:/home/jonas# ls -l > list

debian:/home/jonas# cat list | sed -e "s/[d-][rwx-][rwx-][rwx-][rwx-][rwx-][rwx-][rwx-][rwx-][rwx-]//g" | sed -e "s/ [0-9] //g" > list2
debian:/home/jonas# cat list | sed -e "s/[d-][rwx-][rwx-][rwx-][rwx-][rwx-][rwx-][rwx-][rwx-][rwx-]//g" | sed -e "s/ [0-9] //g" > list2
( Pour avoir une liste de mots ressemblant à une liste de mots.)


debian:/home/jonas# cat list2 | grep "[^a]*a[^a]*a[^a]$"
jonas jonas 2480 2008-12-31 18:34 KDE_Beep_ClassicBeep_1.wav
jonas jonas 2480 2008-12-31 18:34 KDE_Beep_ClassicBeep.wav

Et celle-ci ne trouve rien.
debian:/home/jonas# cat list2 | grep "^[^a]*a[^a]*a[^a]$"

En fait, tu ne dois pas chercher seulement un pro de grep, mais aussi un pro des expressions régulières et des filtres de fichiers. (cut, tr, etc...)


A bientux.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Que pour le cas particulier : lettres a
$ cat rata
rata edzazara kaka
tataa mama
rataa edzazar
$ cat rata |perl -ne '@x=split /\s+/,$_;for $y(@x){print $y,"\n" if (@z=$y=~/a/g)==2}'
rata
kaka
mama
edzazar
$ echo rata edzazara|perl -ne '@x=split /\s+/,$_;for $y(@x){print $y,"\n" if (@z=$y=~/a/g)==2}'
rata
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

En reprenant le fichier de lami20j et l'expression de jivef améliorée :
[tmpfs]$ cat fich
rata edzazara kaka
tataa mama
rataa edzazar

[tmpfs]$ cat fich | egrep -o "\b[^a ]*a[^a]*a[^a]*\b"
rata
kaka
mama
edzazar

[tmpfs]$   
Merci à vous deux ;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Oui, c'est mieux comme ça ;-)
0