sed не использует /
в качестве разделителя.
Из-за примеров мы думаем, что sed использует /
в качестве разделителя. Однако он может использовать любой символ.
напр. sed 's/abc/def/'
можно записать как sed 's^abc^def^
. То, что следует за s
, является разделителем.
Если есть символ, который не используется во вводимом тексте, вы можете использовать это в своих интересах. (Возможно, выберите непечатаемый -символ ).
Значение Param_INFA_PASS
, очевидно, равно Base64 . Он может содержать буквы, цифры и символы +
, /
и =
.
Для простого grep ни один из этих символов не является специальным. Имейте в виду, что для egrep или grep -E
символ +
является специальным, и его необходимо экранировать. Не используйтеgrep -i
:Base64 чувствителен к регистру -.
Для sed ни один из этих символов не является особенным, если вы все сделаете правильно. В команде s
вместо /
можно использовать любой символ¹. Поэтому выберите тот, который не используется в Base64, например
sed -e "s~^PASSWORD=$old_password\$~$new_password~g"
¹ Кроме новой строки и обратной косой черты.