sed заменить текст в двойных кавычках, работа в одинарных кавычках - PullRequest
0 голосов
/ 14 июля 2020

Я использую SED для замены некоторых ключевых слов в файле конфигурации Wordpress (setup-config. php).

Код, расположенный ниже, - это то, что я использую для изменения ключевых слов

sed -i -e "s/( 'wordpress'/( '$varname'/g" "/var/www/$domainname/html/wp-admin/setup-config.php"
sed -i -e "s/( 'username'/( '$varname'/g" "/var/www/$domainname/html/wp-admin/setup-config.php"
sed -i -e "s/( 'password'/( '$autogenpass'/g" "/var/www/$domainname/html/wp-admin/setup-config.php"
sed -i -e "s/( 'wp_'/( '$autogenprefix'/g" "/var/www/$domainname/html/wp-admin/setup-config.php"

Ниже приведены 2 строки, которые используют '(одинарные кавычки)

<?php echo htmlspecialchars( _x( 'username', 'example username' ), ENT_QUOTES ); ?>
<?php echo htmlspecialchars( _x( 'password', 'example password' ), ENT_QUOTES ); ?>" autocomplete="off" />

Ниже приведены 2 строки, которые НЕ работают, которые используют "(двойные кавычки)

<td><input name="dbname" id="dbname" type="text" aria-describedby="dbname-desc" size="25" value="wordpress"<?php echo $autofocus; ?>/></td>
<td><input name="prefix" id="prefix" type="text" aria-describedby="prefix-desc" value="wp_" size="25" /></td>

При замене слов в двойных кавычках этого не происходит "wordpress" и "wp _" .

I попробовал следующее:

sed -i -e "s/( '"wordpress"'/( '$varname'/g" "/var/www/$domainname/html/wp-admin/setup-config.php"
sed -i -e "s/( "'"wordpress"'"/( '$varname'/g" "/var/www/$domainname/html/wp-admin/setup-config.php"
sed -i -e "s/( '""wordpress""'/( '$varname'/g" "/var/www/$domainname/html/wp-admin/setup-config.php"

Я не уверен, что мне здесь не хватает.

Спасибо

1 Ответ

2 голосов
/ 14 июля 2020

Самый простой способ - определить переменную, содержащую двойные кавычки, а затем вы можете использовать это внутри строки.

q='"'
sed -i -e "s/${q}wordpress${q}/${q}$varname${q}/g" "/var/www/$domainname/html/wp-admin/setup-config.php"

Или вы можете избежать двойных кавычек:

q='"'
sed -i -e "s/\"wordpress\"/\"$varname\"/g" "/var/www/$domainname/html/wp-admin/setup-config.php"

В любом случае в регулярном выражении не должно быть одинарных кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...