Bash

從 bash 腳本向配置文件添加行?

  • April 17, 2016

我試圖找出在配置文件中找到一行,然後下拉兩行然後插入一行程式碼。我試圖在 awk/sed 中執行此操作,但被卡在輸入符上。我不依賴於 awk/sed,但正在尋找一種干淨的方式來實現這一點。

<Location />
 Order allow,deny
</Location>

然後在該塊中添加一行:

<Location />
 Order allow,deny
 Allow all
</Location>

awk可用於此。下面的腳本只會在找到<Location />標籤後添加文本。

awk '/\<Location \/\>/{ start=1 } {if(start) ++start; if(start==4) print "  Allow all"} 1' infile

對於以下輸入文件:

stuff
<Location />
 Order allow,deny
</Location>
more
stuff

該腳本產生:

stuff
<Location />
 Order allow,deny
 Allow all
</Location>
more
stuff

如果您想像這樣替換幾個部分,可以輕鬆修改相同的腳本:

awk '/\<Location \/\>/{ start=1 } {if(start) ++start; if(start==4){print "  Allow all"; start=0}} 1' infile
sed '/Order allow,deny/ aAllow all' < yourFile

這會將修改後的文件輸出到stdout。如果你想修改它然後(sed(1)):

-一世

$$ SUFFIX $$, - 到位$$ =SUFFIX $$

          edit files in place (makes backup if SUFFIX supplied)

解釋:

For each line that matches `/Order allow,deny/`:
    Execute command 'a' (append) with 'Allow all' as parameter

http://grymoire.com/Unix/sed.html是了解更多關於sed.

引用自:https://unix.stackexchange.com/questions/253675