Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/05/2008, à 17:31

ezaeza

[résolu][bash] grep "ungreedy"

Bonjours à tous,

ça fait un petit bout de temps que je cherche comment faire un expression régulière avec grep en utilisant les * ou + en non-greedy ...

Donc si quelqu'un sait comment faire ce serait vraiment cool big_smile

Exemple quand même :

echo '<a href="toto" class="machin">tutu</a>' | grep -o 'href=".*"'

donne :

href="toto" class="machin"

Or je veut que ça réponde

href="toto"

Merci à tous ceux qui pourront m'aider smile

Dernière modification par ezaeza (Le 22/05/2008, à 19:27)

Hors ligne

#2 Le 22/05/2008, à 19:06

Link31

Re : [résolu][bash] grep "ungreedy"

echo '<a href="toto" class="machin">tutu</a>' | grep -o 'href="[^"]*"'

Hors ligne

#3 Le 22/05/2008, à 19:27

ezaeza

Re : [résolu][bash] grep "ungreedy"

Énorme merci à toi Link31 big_smile
Je commençait à désespérer, et c'est vrai que c'est pas bette la petite astuce de retirer le ", j'y avait vraiment pas pensé ...

Hors ligne

#4 Le 22/05/2008, à 21:03

Alain.g

Re : [résolu][bash] grep "ungreedy"

Salut,

Tu peux installer pcregrep qui est dispo dans les dépôts.
Il y a également ssed qui supporte aussi les PCRE via l'option -R

Dernière modification par Alain.g (Le 22/05/2008, à 21:05)


Xubuntu Karmic !

Hors ligne

#5 Le 22/05/2008, à 23:09

ezaeza

Re : [résolu][bash] grep "ungreedy"

Ok merci,

mais je préfère rester dans les paquet installés par défaut, c'est moins chiant pour diffuser le script. Et puis je me suis beaucoup servi de grep, donc j'ai pris mes habitudes dessus ... Même si c'est vrai qu'il faudrait que je passe à sed qui à l'aire d'être plus complet ...

Hors ligne

#6 Le 26/05/2008, à 10:57

Totor

Re : [résolu][bash] grep "ungreedy"

Bonjour,

Dans le même style, je galère depuis quelques temps pour récupérer les chiffres entre parenthèses d'un texte :

echo "<tot2o>(23)"|sed "s/^<.*>(\([0-9]{1,2}\))$/\1/"

-> ne renvoie rien

j'ai trouvé une solution en 2 fois, mais bon, si je peux le faire en une seule fois, ça serait top :

echo "<tot2o>(23)"|sed "s/^<.*>(//"|sed "s/)//"

-> renvoie bien 23

Par avance, merci !

Dernière modification par Totor (Le 26/05/2008, à 10:58)


-- Lucid Lynx --

Hors ligne

#7 Le 26/05/2008, à 11:10

Alain.g

Re : [résolu][bash] grep "ungreedy"

salut

Sans l'option -r (--regexp-extended) les parenthèses et accolades doivent être échappées pour être interprétées comme caractères spéciaux :

echo "<tot2o>(23)" | sed  "s/^<.*>(\([0-9]\{1,2\}\))$/\1/"

alors qu'avec l'option -r, ça donnerait :

echo "<tot2o>(23)" | sed -r  "s/^<.*>\(([0-9]{1,2})\)$/\1/"

Dernière modification par Alain.g (Le 26/05/2008, à 11:10)


Xubuntu Karmic !

Hors ligne

#8 Le 26/05/2008, à 11:17

Totor

Re : [résolu][bash] grep "ungreedy"

merci !
couillon que je fais wink


-- Lucid Lynx --

Hors ligne