Utiliser un argument dans une commande sed

Résolu
calimerette -  
 calimerette -
Bonjour,

Je souhaite utiliser un argument dans une commande sed et, après avoir essayé plusieurs solutions, bein ça ne marche pas. Aussi, si quelqu'un a une idée pour m'aider, ça serait sympa !

Voilà la commande sed que j'ai tapé, sachant que l'argument $2 correspond à un chiffre passé en paramètre du script :

sed -i.bak "s/intermediate-1/inter1\-\$2/g" {} \;

Le résultat est le suivant : DBT/inter1-$2-836A90/1/1

Merci d'avance pour votre aide !

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    A quoi correspond l'expression "inter1\-\$2" ?

    Les anti-slashs doivent-ils se retrouver dans le résultat final ou sont-ils là pour protéger les caractères qu'ils précèdent ?

    En gros à quoi ressemble l'expression à remplacer et à quoi doit-elle ressembler au final ?
    0
    1. calimerette
       
      ligne de départ : DBT/intermediate-1-836A90/1/1
      ligne résultat : DBT/inter1-$2-836A90/1/1
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      ligne résultat : DBT/inter1-$2-836A90/1/1
      Je suppose que le "$2" doit être évalué avant ?

      sed -i.bak "s/intermediate-1/inter1-$2/g" {}
      0
    3. calimerette
       
      Yes, ça marche !!!!!! Un grand merci pour ton aide !
      0
  2. gm
     
    Bonjour,

    En général, quand je commence à devoir utiliser des variables dans des regexp, j'arrête le shell et je passe à Perl (appel d'un oneliner ou codage complet du script, selon les cas). Question de préservation de ma santé mentale :)
    0