Rendre executable par bash une sortie de sed

Résolu
tazou74 Messages postés 6 Statut Membre -  
tazou74 Messages postés 6 Statut Membre -
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. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

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

    0
  2. tazou74 Messages postés 6 Statut Membre
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      $ test='name[valeur]'
      
      $ echo $test 
      name[valeur]
      
      $ eval $(echo $test | sed "s/\(.*\)\[\(.*\)\]/\1=\'\2\'/") 
      
      $ echo $name
      valeur
      
      $

      ;-))
      0
  3. tazou74 Messages postés 6 Statut Membre
     
    MERCI :-))))))
    0