#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,
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