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. 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
      
      $

      ;-))
  2. Contributeur
    Salut,

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