Pour les pro de grep

Fermé
progfann Messages postés 365 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 23 septembre 2010 - 31 janv. 2009 à 02:22
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 31 janv. 2009 à 11:24
Bonjour,
comment je peux afficher un mot qui contient exactement 2 lettres 'aa'
par exemple : rata edzazara ==> il va afficher rata
merci

4 réponses

jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
31 janv. 2009 à 03:38
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 mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
31 janv. 2009 à 05:21
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
31 janv. 2009 à 10:06
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
31 janv. 2009 à 10:33
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
31 janv. 2009 à 11:24
Salut,

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