我正在尝试编写一个bash脚本,它将在一个字符串匹配后插入一个字符串。
/usr/lib/systemd/system/neutron-server.service我可以轻松地在其他文件上这样做,因为我只是将变量插入到必要的配置文件中,但这个文件似乎给我带来了麻烦。
我认为错误在于sed没有忽略特殊字符。在我的尝试中,我尝试使用sed的单引号和双引号(我理解这是用于变量,但认为它可能会改变一些东西。是否有更好的方法来处理这个或一些特殊的sed标志或语法我遗漏了?
sed ‘/--config-file /etc/neutron/plugin.ini/a\--config-file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini‘ /usr/lib/systemd/system/neutron-serverTL;DR -插入
--config-file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini 之后
--config-file /etc/neutron/plugin.ini奥吉尼亚档案
[Unit]
Description=OpenStack Neutron Server
After=syslog.target network.target
[Service]
Type=notify
User=neutron
ExecStart=/usr/bin/neutron-server --config-file /usr/share/neutron/neutron-
dist.conf --config-dir /usr/share/neutron/server --config-file
/etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir
/etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-server -
-log-file /var/log/neutron/server.log
PrivateTmp=true
NotifyAccess=all
KillMode=process
TimeoutStartSec="infinity"
[Install]
WantedBy=multi-user.target文件在所需的更改命令之后。
[Unit]
Description=OpenStack Neutron Server
After=syslog.target network.target
[Service]
Type=notify
User=neutron
ExecStart=/usr/bin/neutron-server --config-file /usr/share/neutron/neutron-
dist.conf --config-dir /usr/share/neutron/server --config-file
/etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-
file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini --config-dir
/etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-server -
-log-file /var/log/neutron/server.log
PrivateTmp=true
NotifyAccess=all
KillMode=process
TimeoutStartSec="infinity"
[Install]
WantedBy=multi-user.target发布于 2017-06-13 21:41:40
sed -i.bak 's_--config-file /etc/neutron/plugin.ini_& --config-file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini_' /usr/lib/systemd/system/neutron-server.service 原始文件将保留为neutron-server.service.bak。只需在后面搜索要插入某些内容的字符串,并将其替换为该字符串,然后是插入。使用_而不是/作为sed分隔符,使得替换前和替换后的段少了很多纠察符。
https://unix.stackexchange.com/questions/370954
复制相似问题