首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed搜索并替换配置文件值

使用sed搜索并替换配置文件值
EN

Stack Overflow用户
提问于 2018-05-05 05:26:39
回答 1查看 248关注 0票数 0

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

代码语言:javascript
复制
...
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
...

我需要能够解析文件并替换证书和私钥字符串。在这上面花了几天的时间后,我接近了

代码语言:javascript
复制
sed -i -E "s/(WebUI\\\\HTTPS\\\\Certificate=@ByteArray\().+(\))/\1foo\2/g" /home/qbtuser/.config/qBittorrent/qBittorrent.conf

这是可行的,并将证书字符串替换为foo。但是,当我从文件中读取实际的证书并替换它时,它失败了:

代码语言:javascript
复制
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

显然,它不喜欢证书文件中的换行符。如果我像foo一样将cert设置为一行值,它就能正常工作。但是multiline不起作用。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2018-06-21 14:43:42

试试这个:

代码语言:javascript
复制
certificate=$(sed ':a;N;$!ba;s/\n//g' certificateFile);
sed -i -E "s/(WebUI\\\\HTTPS\\\\Certificate=@ByteArray\().+(\))/\1$certificate\2/g" targetFile
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50183251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档