Я пытаюсь найти определенную строку и заменить все ее вхождения в файле.
sed -i -e "s/$search_string/$replace_string/g" $filePath
Я продолжаю получать sed: unmatched '/'
ошибку на BusyBox v1.35.0. Однако то же самое прекрасно работает на моей локальной системе.
ИНет, ни то $search_string
, ни то $replace_string
не содержит /
. Я попробовал использовать все типы разделителей на всякий случай.
решение1
Проблема возникала из-за того, что $replace_string представляла собой строку в кодировке base64 с пробелами и новой строкой.
replace_string=$(echo -n $json_string | base64)
изменив эту команду выше на
json_string=$(echo -n $json_string | base64 -w 0)
решил это для меня
-w, --wrap=COLS Переносить закодированные строки после символа COLS (по умолчанию 76). Используйте 0, чтобы отключить перенос строк.