Rendre executable par bash une sortie de sed

Résolu/Fermé
tazou74 Messages postés 6 Date d'inscription vendredi 3 août 2012 Statut Membre Dernière intervention 13 septembre 2012 - 3 août 2012 à 16:09
tazou74 Messages postés 6 Date d'inscription vendredi 3 août 2012 Statut Membre Dernière intervention 13 septembre 2012 - 3 août 2012 à 16:28
Bonjour,

Je dois travailler sur un fichier tabulé dont l'ordre des colonnes n'est pas fixe, mais elles contiennent toujours la même syntaxe:

name[valeur]

Je voudrais que name devienne le nom de ma variable

name='valeur'

J'ai essayé de construire mon assignation de variable par sed :

>test='name[valeur]'

>echo $test | sed "s/\(.*\)\[\(.*\)\]/\1=$\'\2\'/" | bash

ca ne fonctionne pas

pourtant j'avais déjà construit une commande 'mv' de la manière et cela avait fonctionné.

Est-ce que quelqu'un serait pourquoi là ça ne fonctionne pas?

merci





A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
3 août 2012 à 16:18
Salut,

La sortie de ton "sed" donne :
name=$'valeur'
et ça "bash" lui il ne connait pas ;-((

0
tazou74 Messages postés 6 Date d'inscription vendredi 3 août 2012 Statut Membre Dernière intervention 13 septembre 2012
3 août 2012 à 16:21
zut j'ai pas fait un copier coller de la bonne ligne:

c'est
echo $test | sed "s/\(.*\)\[\(.*\)\]/\1=\'\2\'/" | bash

ce qui si retire | bash inscrit bien

name='valeur'

mais echo $name n'ecrit rien
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
3 août 2012 à 16:26
$ test='name[valeur]'

$ echo $test 
name[valeur]

$ eval $(echo $test | sed "s/\(.*\)\[\(.*\)\]/\1=\'\2\'/") 

$ echo $name
valeur

$

;-))
0
tazou74 Messages postés 6 Date d'inscription vendredi 3 août 2012 Statut Membre Dernière intervention 13 septembre 2012
3 août 2012 à 16:28
MERCI :-))))))
0