各位好
想請教一下LINUX使用SED 如何修改httpd.conf內多行的設定內容,各個設定所在的位置是不相鄰的
上網找到的大部份是修改單一行...sed 's/aaa/bbb/' source > tmp.txt
如果我要修改1, 5 ,8 ,22這幾行的內容,一行做一次SED的話來處理的話會產生太多暫存檔,想說是不是不什麼方法可以用SED一次將相關的設定內容置換掉後,存成暫存檔後,再覆蓋掉原檔....不知有那位大大可以指教一下
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 修改掉了。