如何解决如何使用 sed 或任何其他方法仅替换 magento envfile 中的 dbpassword
我想使用脚本替换 magento envfile 中的 dbpassword。我尝试使用 sed 命令,它替换了两个密码字段。例如:
<?PHP
return [
],'db' => [
'table_prefix' => '','connection' => [
'default' => [
'host' => '127.0.0.1','dbname' => '','username' => '','password' => '',]
]
]
],'x-frame-options' => 'SAMEORIGIN','MAGE_MODE' => 'production','session' => [
'save' => 'redis','redis' => [
'host' => '127.0.0.1','port' => '6379',]
我在脚本中尝试了以下 sed 命令,它替换了 db 和 reddis 密码。
sed -r '/password/ s/(^.*)(=>.*)/\1 => '"'"$pass"'"',/g' testfile1.txt
如何仅替换 db 数组中的密码字段。在这种情况下,带有行号和实例计数的 sed 用法没有帮助,因为这在不同情况下可能会有所不同。
解决方法
我会在这里使用 AWK,类似于以下 replace-password-in-db.awk
:
#!/usr/bin/awk -f
BEGIN {
replace_next_password = 0
}
/\s+'db' => \[/ {
replace_next_password = 1
print
next
}
/\s+'password' =>/ && replace_next_password {
gsub(/'',$/,"'" new_pass "',")
print
replace_next_password = 0
next
}
1
用法:
$ awk -v new_pass="my-new-pass-is-here" -f ./replace-password-in-db.awk php
<?php
return [
],'db' => [
'table_prefix' => '','connection' => [
'default' => [
'host' => '127.0.0.1','dbname' => '','username' => '','password' => 'my-new-pass-is-here',]
]
]
],'x-frame-options' => 'SAMEORIGIN','MAGE_MODE' => 'production','session' => [
'save' => 'redis','redis' => [
'host' => '127.0.0.1','port' => '6379','password' => '',]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。