Wenn Sie ein Schlüsselwort mit sed durch eine Zeichenfolge ersetzen möchten, versucht sed, Ihre Ersatzzeichenfolge zu interpretieren. Wenn die Ersatzzeichenfolge Zeichen enthält, die sed als besonders erachtet, z. B. ein '/' - Zeichen, schlägt dies fehl, es sei denn, Sie haben natürlich gemeint, dass Ihre Ersatzzeichenfolge Zeichen enthält, die sed angeben, wie sie sich verhalten sollen.
Ex:
VAR="hi/"
sed "s/KEYWORD/$VAR/g" somefile
Gibt es eine Möglichkeit, sed anzuweisen, nicht zu versuchen, die Ersatzzeichenfolge für Sonderzeichen zu interpretieren? Ich möchte nur in der Lage sein, ein Schlüsselwort in einer Datei durch den Inhalt einer Variablen zu ersetzen, unabhängig davon, um welchen Inhalt es sich handelt.
sed(1)
interpretiert nur, was es bekommt. In Ihrem Fall wird dies über eine Shell-Interpolation erreicht. Ich glaube, Sie können nicht tun, was Sie wollen, aber lesen Sie das Handbuch. Ich weiß, dass Sie in Perl (das einen passablen sed
Ersatz mit viel umfangreicheren regulären Ausdrücken darstellt) angeben können, dass eine Zeichenfolge wörtlich genommen werden soll. Überprüfen Sie erneut das Handbuch.
sed
und diese nicht besonders sein sollen, entkommen Sie ihnen einfach mit einem Backslash.VAR='hi\/'
gibt kein solches Problem.