La réponse ci-dessus :
sed -i '/TEXT_TO_BE_REPLACED/c\This line is removed by the admin.' /tmp/foo
Cela fonctionne bien si la chaîne/ligne de remplacement n'est pas une variable.
Le problème est que sur Redhat 5, l'option \
après le c
s'échappe de la $
. Un double \\
ne fonctionne pas non plus (du moins sur Redhat 5).
À force d'essais, j'ai découvert que le \
après le c
est redondant si votre chaîne/ligne de remplacement n'est qu'une seule ligne. Je n'ai donc pas utilisé \
après le c
J'ai utilisé une variable comme ligne de remplacement unique et c'était la joie.
Le code ressemblerait à quelque chose comme :
sed -i "/TEXT_TO_BE_REPLACED/c $REPLACEMENT_TEXT_STRING" /tmp/foo
Notez l'utilisation de guillemets doubles au lieu de guillemets simples.