Ich versuche, nach einer bestimmten Zeichenfolge zu suchen und alle Vorkommen innerhalb einer Datei zu ersetzen.
sed -i -e "s/$search_string/$replace_string/g" $filePath
Ich erhalte ständig sed: unmatched '/'
einen Fehler bei BusyBox v1.35.0. Auf meinem lokalen System funktioniert das Gleiche jedoch einwandfrei.
UndNEIN, weder „the“ $search_string
noch „the“ $replace_string
enthalten ein /
. Ich habe vorsichtshalber auch alle Arten von Trennzeichen versucht.
Antwort1
Das Problem trat auf, weil der $replace_string ein Base64-codierter String mit Leerzeichen und Zeilenumbrüchen war.
replace_string=$(echo -n $json_string | base64)
Ändern Sie den obigen Befehl in
json_string=$(echo -n $json_string | base64 -w 0)
hat es für mich gelöst
-w, --wrap=COLS Codierte Zeilen nach COLS-Zeichen umbrechen (Standard: 76). Verwenden Sie 0, um den Zeilenumbruch zu deaktivieren.