Linux 搜寻及;用sed替换配置文件值

Linux 搜寻及;用sed替换配置文件值,linux,bash,sed,Linux,Bash,Sed,我正在致力于在我的web应用程序中自动更新和安装证书。这个特别的是qBittorrent。它将SSL证书/私钥存储在配置文件中,如下所示 ... WebUI\AuthSubnetWhitelistEnabled=false WebUI\HTTPS\Certificate=@ByteArray(-----BEGIN CERTIFICATE-----\n0GCSqGSIb3DQEBCwUA\nMEoxCzAQaih7W\n-----END CERTIFICATE-----) WebUI\HTTPS\

我正在致力于在我的web应用程序中自动更新和安装证书。这个特别的是qBittorrent。它将SSL证书/私钥存储在配置文件中,如下所示

...
WebUI\AuthSubnetWhitelistEnabled=false
WebUI\HTTPS\Certificate=@ByteArray(-----BEGIN CERTIFICATE-----\n0GCSqGSIb3DQEBCwUA\nMEoxCzAQaih7W\n-----END CERTIFICATE-----)
WebUI\HTTPS\Enabled=true
WebUI\HTTPS\Key="@ByteArray(-----BEGIN PRIVATE KEY-----\nFAASdoONpV\nBvX+hUcjAne0PkZV9d7NG1QvipW+MPa4N12i+aRmwK\nhACATS21MMnBFTRGSfzwLy4=\n-----END PRIVATE KEY-----)"
WebUI\LocalHostAuth=true
...
我需要能够解析文件并替换证书和私钥字符串。在这上面花了几天时间之后,我接近了

sed -i -E "s/(WebUI\\\\HTTPS\\\\Certificate=@ByteArray\().+(\))/\1foo\2/g" /home/qbtuser/.config/qBittorrent/qBittorrent.conf
这将起作用,并将证书字符串替换为
foo
。但是,当我从文件中读取实际证书并替换它时,它失败:

cert=$(<$certPath)
sed -i -E "s/(WebUI\\\\HTTPS\\\\Certificate=@ByteArray\().+(\))/\1${cert}\2/g" /home/qbtuser/.config/qBittorrent/qBittorrent.conf
sed: -e expression #1, char 78: unterminated `s' command
cert=$(试试这个:

certificate=$(sed ':a;N;$!ba;s/\n//g' certificateFile);
sed -i -E "s/(WebUI\\\\HTTPS\\\\Certificate=@ByteArray\().+(\))/\1$certificate\2/g" targetFile

你可以用
tr
替换新行,然后分享一个代码示例吗?我是纽特。这个问题可能有助于bitI研究这个问题,但没有帮助。我如何在这里具体应用它?@Mansuro我尝试过用\n
cert=$(sed-E):a;n;$!ba;s/\r{0,1}\n/\\n/g'$certPath)替换新行
但它仍然不起作用。我即将放弃。谢谢,我在这里使用python脚本解决了这个问题: