Die Antwort oben:
sed -i '/TEXT_TO_BE_REPLACED/c\This line is removed by the admin.' /tmp/foo
Funktioniert gut, wenn die Ersatzzeichenfolge/Zeile keine Variable ist.
Das Problem ist, dass unter Redhat 5 die \
nach dem c
entgeht dem $
. Ein Doppel \\
funktionierte ebenfalls nicht (zumindest unter Redhat 5).
Durch Versuch und Irrtum habe ich herausgefunden, dass die \
nach dem c
ist überflüssig, wenn Ihre Ersetzungszeichenfolge/Zeile nur aus einer einzigen Zeile besteht. Ich habe also nicht verwendet \
nach dem c
eine Variable als einzelne Ersetzungszeile verwendet, und es war eine Freude.
Der Code würde etwa so aussehen:
sed -i "/TEXT_TO_BE_REPLACED/c $REPLACEMENT_TEXT_STRING" /tmp/foo
Beachten Sie die Verwendung von doppelten Anführungszeichen anstelle von einfachen Anführungszeichen.