sed? - 特殊文字を含む文字列の後にNeutronサービスの行を挿入します。

sed? - 特殊文字を含む文字列の後にNeutronサービスの行を挿入します。

文字列を一致させた後に挿入するbashスクリプトを作成しようとしています。

/usr/lib/systemd/system/neutron-server.service

必要な構成ファイルに変数を挿入したため、他のファイルでも簡単にこれを実行できましたが、これが問題を引き起こしているようです。

バグは、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-server

TL;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

ベストアンサー1

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セグメントの前後のセグメントをあいまいに置き換えることができます。

おすすめ記事