首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sed?-在带有特殊字符的字符串后面插入行以获得中子服务。

sed?-在带有特殊字符的字符串后面插入行以获得中子服务。
EN

Unix & Linux用户
提问于 2017-06-13 20:48:40
回答 1查看 1.7K关注 0票数 0

我正在尝试编写一个bash脚本,它将在一个字符串匹配后插入一个字符串。

代码语言:javascript
复制
/usr/lib/systemd/system/neutron-server.service

我可以轻松地在其他文件上这样做,因为我只是将变量插入到必要的配置文件中,但这个文件似乎给我带来了麻烦。

我认为错误在于sed没有忽略特殊字符。在我的尝试中,我尝试使用sed的单引号和双引号(我理解这是用于变量,但认为它可能会改变一些东西。是否有更好的方法来处理这个或一些特殊的sed标志或语法我遗漏了?

代码语言:javascript
复制
sed ‘/--config-file /etc/neutron/plugin.ini/a\--config-file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini‘ /usr/lib/systemd/system/neutron-server

TL;DR -插入

代码语言:javascript
复制
--config-file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini 

之后

代码语言:javascript
复制
--config-file /etc/neutron/plugin.ini

奥吉尼亚档案

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

文件在所需的更改命令之后。

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

回答 1

Unix & Linux用户

发布于 2017-06-13 21:41:40

代码语言:javascript
复制
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分隔符,使得替换前和替换后的段少了很多纠察符。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/370954

复制
相关文章

相似问题

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