Rendre executable par bash une sortie de sed

Résolu
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

3 réponses

  1. Contributeur
    Salut,

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

    1. 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
      1. Contributeur
        $ test='name[valeur]'
        
        $ echo $test 
        name[valeur]
        
        $ eval $(echo $test | sed "s/\(.*\)\[\(.*\)\]/\1=\'\2\'/") 
        
        $ echo $name
        valeur
        
        $

        ;-))