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 13/09/2011, à 12:19

Couteaux

[Résolu, Bash] extraire argument entre accolades.

Bonjour,

je souhaiterais extraire l'argument entre accolades d'une chaîne de caractères.
J'ai essayé:

grep -w "\{*\}" $fich

mais ça ne marche pas.
Si quelqu'un a une idée, je suis preneur.

Dernière modification par Couteaux (Le 19/09/2011, à 09:13)

Hors ligne

#2 Le 13/09/2011, à 12:33

Postmortem

Re : [Résolu, Bash] extraire argument entre accolades.

Salut,

$ cat test.txt
ligne{argument}
ligne 2 {arg2}

$ grep -o '{.*}' test.txt
{argument}
{arg2}

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#3 Le 13/09/2011, à 14:05

Couteaux

Re : [Résolu, Bash] extraire argument entre accolades.

Wow, super merci.

Hors ligne

#4 Le 13/09/2011, à 14:21

Couteaux

Re : [Résolu, Bash] extraire argument entre accolades.

Il y a encore un problème. Ta commande ne fonctionne que si les arguments sont en fin de ligne. Comment fait-on si ce n'est pas le cas?

Hors ligne

#5 Le 13/09/2011, à 14:46

Postmortem

Re : [Résolu, Bash] extraire argument entre accolades.

Ca marche peu importe où se trouvent les accolades :

$ cat test.txt
ligne{argument}
ligne 2 {arg2}
{argx}zeezfzf
hjufzie{untruc truc}DDDDD
ligne sans argument

$ grep -o '{.*}' test.txt
{argument}
{arg2}
{argx}
{untruc truc}

Si tu ne souhaites pas récupérer les accolades :

$ sed -n 's/.*{\(.*\)}.*/\1/p' test.txt
argument
arg2
argx
untruc truc

EDIT : Tout ceci ne fonctionne que s'il n'y a qu'un argument par ligne. S'il y a 2 paires d'accolades ou plus, ça ne fonctionne pas.

Re-EDIT :
S'il y a plusieurs arguments par ligne :

$ cat test.txt 
ligne{argument}
ligne 2 {arg2}
{argx}zeezfzf{ARG}ffff
hjufzie{untruc truc}DDDDD
ligne sans argument
 
$ sed -n 's/[^{]*\({[^}]*}\)[^{]*/\1/gp' test.txt 
{argument}
{arg2}
{argx}{ARG}
{untruc truc}

Dernière modification par Postmortem (Le 13/09/2011, à 15:01)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#6 Le 13/09/2011, à 15:44

aduxas

Re : [Résolu, Bash] extraire argument entre accolades.

Pour comprendre ton erreur,

Couteaux a écrit :

grep -w "\{*\}" $fich

Ceci cherche zéro ou plus caractères { suivi du caractère } donc p.e.

texte{}texte
texte{{{}texte
texte}texte

Hors ligne

#7 Le 14/09/2011, à 09:58

Postmortem

Re : [Résolu, Bash] extraire argument entre accolades.

@Couteaux : un p'tit résolu ?!


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne