Я ищу регулярное выражение для быстрой замены пароля в следующем файле 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