iT邦幫忙

0

sed 如何修改設定檔內多行參數

各位好
想請教一下LINUX使用SED 如何修改httpd.conf內多行的設定內容,各個設定所在的位置是不相鄰的
上網找到的大部份是修改單一行...sed 's/aaa/bbb/' source > tmp.txt

如果我要修改1, 5 ,8 ,22這幾行的內容,一行做一次SED的話來處理的話會產生太多暫存檔,想說是不是不什麼方法可以用SED一次將相關的設定內容置換掉後,存成暫存檔後,再覆蓋掉原檔....不知有那位大大可以指教一下

1 個回答

4
wiseguy
iT邦超人 1 級 ‧ 2012-04-26 19:47:09
最佳解答

sed 可以用多個 -e 來接一個置換指令,例如:
sed -e 's/aaa/bbb/' -e 's/ccc/ddd/' -e 's/eee/fff/' ... source_file
隨你高興接幾個,只要不超過命令列長度極限 65535 都行。
如果你是用 linux 的 gnu 版 sed,那多條件就直接以分號隔開就行了:
sed 's/aaa/bbb/;s/ccc/ddd/;s/eee/fff/' ... source_file

至於暫存檔,不用那麼麻煩,加一個 -i 的參數,sed 就直接幫你改原檔了,不必自己重導再蓋回來。例如:
sed -i -e 's/aaa/bbb/' -e 's/ccc/ddd/' -e 's/eee/fff/' ... source_file
就會直接把 source_file 修改掉了。

yaojie iT邦新手 5 級 ‧ 2012-04-27 09:12:33 檢舉

感謝你的回覆.....剛開始在練習SCRIPT...SED跟AWK真是千變萬化....但也不好懂...
我先試看看了... .有問題再請教你...

我要發表回答

立即登入回答