Suchen und Ersetzen funktioniert nicht mit sed busybox. Es wird der Fehler sed: unübertroffener '/' angezeigt.

Suchen und Ersetzen funktioniert nicht mit sed busybox. Es wird der Fehler sed: unübertroffener '/' angezeigt.

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_stringnoch „the“ $replace_stringenthalten 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.

verwandte Informationen