Замена зашифрованного пароля [дубликат]

0
15.09.2018, 22:19
2 ответа

sed не использует /в качестве разделителя.

Из-за примеров мы думаем, что sed использует /в качестве разделителя. Однако он может использовать любой символ.

напр. sed 's/abc/def/'можно записать как sed 's^abc^def^. То, что следует за s, является разделителем.

Если есть символ, который не используется во вводимом тексте, вы можете использовать это в своих интересах. (Возможно, выберите непечатаемый -символ ).

0
28.01.2020, 02:42

Значение Param_INFA_PASS, очевидно, равно Base64 . Он может содержать буквы, цифры и символы +, /и =.

Для простого grep ни один из этих символов не является специальным. Имейте в виду, что для egrep или grep -Eсимвол +является специальным, и его необходимо экранировать. Не используйтеgrep -i:Base64 чувствителен к регистру -.

Для sed ни один из этих символов не является особенным, если вы все сделаете правильно. В команде sвместо /можно использовать любой символ¹. Поэтому выберите тот, который не используется в Base64, например

sed -e "s~^PASSWORD=$old_password\$~$new_password~g"

¹ Кроме новой строки и обратной косой черты.

1
28.01.2020, 02:42

Теги

Похожие вопросы