Utiliser un argument dans une commande sed

Résolu/Fermé
calimerette - 12 sept. 2011 à 09:10
 calimerette - 12 sept. 2011 à 10:23
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 !
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 sept. 2011 à 09:41
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
ligne de départ : DBT/intermediate-1-836A90/1/1
ligne résultat : DBT/inter1-$2-836A90/1/1
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 sept. 2011 à 10:10
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
Yes, ça marche !!!!!! Un grand merci pour ton aide !
0
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