Назад | Перейти на главную страницу

sed regexp для замены xxx в define ('DB_PASSWORD', 'xxxx') ;?

Я ищу регулярное выражение для быстрой замены пароля в следующем файле wp-config, например:

define('DB_PASSWORD', 'xxxx');

Теперь в конфигурационном файле много определяет, так что существенный чтобы заменить только параметр DB_PASSWORD. Я также не знаю старого пароля, то есть я не могу заменить «xxxx» на «yyyy».

Я использую Linux с SED .... (нужно заменить много файлов), что-то вроде:

cat wp-config.php | sed 's/[here the regexp]/new password/'

Спасибо!

Это сложно, если вы не знаете старый пароль. Но вы можете попробовать что-то вроде этого -

 sed -e "s;\(define([[:space:]]*'DB_PASSWORD',[[:space:]]*\)\(.*\)\()\;\);\1'NewPassHere'\3;g" wp-config.php

Это будет соответствовать тексту перед паролем, затем паролю, а затем оставшемуся тексту после пароля. Он сохранит его в \ 1, \ 2, \ 3 - в конце он заменит только \ 2 (который является паролем).

После того, как вы визуально подтвердите успешную замену паролей, вы можете использовать sed -i для замены паролей. Пожалуйста, сделайте резервную копию wp-config.php перед запуском этого единственного лайнера.

На всякий случай, если кому-то понадобится Perl (большинство людей в настоящее время не знают, что у вас есть такой инструмент по умолчанию во многих дистрибутивах). Oneliner заменяет все, что находится между второй парой одинарных кавычек, новым паролем.

perl -i -pe" s|^define.'DB_NAME', '(.*?)'.;|define('DB_PASSWORD', 'newpassword');|" wp-config.php

Здесь точки после «определить» и перед «;» означает "(" и ")" соответственно, чтобы избежать конструкции типа "(", которая делает регулярное выражение более читабельным. Кроме того, для удобства чтения заменяемой части я не переносил части строки, которые находятся до и после пароля, в переменную, но, конечно, это можно сделать.

Если вы запускаете oneliner в скрипте и вам нужно получить новый проход из переменной оболочки:

newpass=$(do_something_here)
perl -i -pe" s|^define.'DB_NAME', '(.*?)'.;|define('DB_PASSWORD', '$newpass');|" wp-config.php