Utiliser un argument dans une commande sed

Résolu
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. 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 :)
    1. Contributeur
      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 ?
      1. ligne de départ : DBT/intermediate-1-836A90/1/1
        ligne résultat : DBT/inter1-$2-836A90/1/1
      2. Contributeur
        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" {}
      3. Yes, ça marche !!!!!! Un grand merci pour ton aide !