Aller au contenu

Extraire des chaines de caractère entre crochet "[ ]"


Bones-75

Messages recommandés

Membre, 🐧 Forumeur libre, 54ans Posté(e)
Ed. Membre 959 messages
54ans‚ 🐧 Forumeur libre,
Posté(e)
il y a 1 minute, Bones-75 a dit :

D'accord merci encore pour ton aide @Ed.

Avec plaisir 🐧.

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, Raven, 42ans Posté(e)
Mak Marceau Membre 5 697 messages
42ans‚ Raven,
Posté(e)
il y a 48 minutes, Nutkin a dit :

@Mak Marceau maîtrise Linux. Il pourra peut-être aider.

Un jour je vais savoir ça.

Lien à poster
Partager sur d’autres sites

Membre, Explorateur de Nuages, 46ans Posté(e)
Pheldwyn Membre 22 679 messages
46ans‚ Explorateur de Nuages,
Posté(e)

A noter que suivant le type de shell, tu peux avoir l'option -r pour sed qui permet de prendre en compte les expressions rationnelles étendues.

Bon, en gros, ça t'évite de devoir échapper tes parenthèses, accolades, ... dans ton expression régulière et d'avoir quelque chose de plus lisible :

echo "abcd=aaaa[xxxx.xxxx.xxxx.xxxx]" | sed -re "s/.*\[(.*)\]/\1/"
echo "abcd=aaaa[xxxx.xxxx.xxxx.xxxx]" | sed -re "s/[^[]*\[([^]]*)\]/\1/"


 

Lien à poster
Partager sur d’autres sites

Membre, 23ans Posté(e)
Bones-75 Membre 89 messages
Forumeur activiste‚ 23ans‚
Posté(e)
il y a 6 minutes, Pheldwyn a dit :

A noter que suivant le type de shell, tu peux avoir l'option -r pour sed qui permet de prendre en compte les expressions rationnelles étendues.

Bon, en gros, ça t'évite de devoir échapper tes parenthèses, accolades, ... dans ton expression régulière et d'avoir quelque chose de plus lisible :



echo "abcd=aaaa[xxxx.xxxx.xxxx.xxxx]" | sed -re "s/.*\[(.*)\]/\1/"
echo "abcd=aaaa[xxxx.xxxx.xxxx.xxxx]" | sed -re "s/[^[]*\[([^]]*)\]/\1/"


 

Merci @Pheldwyn je prend note au cas où. (^ ^)

Lien à poster
Partager sur d’autres sites

Membre, 🐧 Forumeur libre, 54ans Posté(e)
Ed. Membre 959 messages
54ans‚ 🐧 Forumeur libre,
Posté(e)
Il y a 6 heures, Bones-75 a dit :

 


echo "abcd=aaaa[xxxx.xxxx.xxxx.xxxx]" | sed -re "s/.*\[(.*)\]/\1/"
echo "abcd=aaaa[xxxx.xxxx.xxxx.xxxx]" | sed -re "s/[^[]*\[([^]]*)\]/\1/"

 

Bien vu mais je craints que cette syntaxe simplifiée ne soit pas facilement adaptable pour traiter les données en flux.

Exemple :

echo "abcd=aaaa[xxx.xxx.xxx.xxx] abcd=aaaa[yyy.yyy.yyy.yyy]" | sed -e "s/[^[]*\[\([^]]*\)]/\1 /g"


xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy

 

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×