[英]GNU sed matching lines with unescaped characters
我遇到了 SED 的問題,它的表現並不完全符合我的預期。 我正在嘗試在比賽后將 append 換行(使用換行符,\n)。 我正在嘗試為我們所有部署的機器以及所有未來的機器自動修復服務文件(嗯,直到供應商修復它)。
假設我有一個名為“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 匹配到“[服務]”。 我無法匹配“服務”,否則它將多次寫入 output(它將與以下行匹配:[Service] 和行“Environment="SERVICEMAINCLASS=com.GoogleFoo.service.foo.ServiceRunner ""。我建立了一個更簡單的文件來處理表達式以查看它出錯的地方,我能找到的最好的是括號是一個未轉義的字符。
我嘗試了兩個給出不同結果的命令。 (結果-> Imgur 鏈接)
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
我的命令哪里出錯了? 我嘗試用各種引號和其他轉義字符將模式封裝起來,但迄今為止還沒有奏效。 有輸入嗎?
干杯,邁克
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.