我遇到了SED的问题,并且表现得不尽如人意。我正在尝试在比赛后附加到行(使用换行符,\ n)。我正在尝试为所有已部署的计算机以及以后所有的计算机自动修复Service文件(嗯,直到供应商对其进行修复)。
假设我有一个名为“ foo.service”的文件,看起来像这样:
[Unit]
Description=Foo
After=network.target
[Service]
User=UserFoo
Environment="SERVICENAME=foo"
Environment="SERVICEPATH=/opt/foo"
Environment="SERVICEMAINCLASS=com.GoogleFoo.service.foo.ServiceRunner
我需要将sed与“ [Service]”匹配。我无法匹配“ Service”,否则它将多次写入输出(它将与以下行匹配:[Service]和行“ Environment =“ SERVICEMAINCLASS = com.GoogleFoo.service.foo.ServiceRunner” “。我建立了一个简单得多的文件来处理表达式,以查看错误的出处,我所能发现的最好的是方括号是未转义的字符。
我尝试了两个给出不同结果的命令。 (结果-> Imgur Link)
sed -i "/[abc]/aRestart=on-failure\nRestartSec=60" TestFile && cat TestFile
sed -i "/abc/aRestart=on-failure\nRestartSec=60" TestFile.bak && cat TestFile.bak
其中testFile和TestFile.bak是同一文件
[abc]
cde
efg
ghi
我的命令哪里出问题了?我曾尝试将模式包含在各种引号和其他转义字符中,但迄今为止尚未奏效。有输入吗?
干杯,迈克