1. 程式人生 > >使用 sed 修改配置檔案

使用 sed 修改配置檔案

最近寫一些Debian包安裝指令碼。由於希望安裝時能提示使用者輸入一些初始配置引數,用sed倒來倒去,終於弄出來。

sed功能強大,但引數繁多,一天不用就忘。還是找個地方記下來,一來給大家分享,二來這裡比記在本子上強。

一個典型的例子是,在配置檔案中修改一個子網IP。在這個配置檔案中,本人定義的子網IP格式是 網段IP加掩碼位數:

如 192.168.10.4/26

還有一個進一步的例子,就是在引數是多個值用分號(;)隔開的,需要遍歷每個值做事情。下面就是對類似storage_root=/path1;path2;/path3;/path4 進行檔案遍歷檢查檔案完整性。

分兩步,一是取出引數“/path1;path2;/path3;/path4”,二是將分號替換成空格,然後用for迴圈:

另外一個困擾我很久的問題是分割符轉義。好比上面的例子,如果要將帶有“/“的字串替換到檔案中,總是出錯。比如:

將  storage_root=/path1;/path2;/path3;/path4  替換到檔案中的 storage_root 的設定。

後來經高人提醒,原來sed可以使用其他分割符號的,如下面的命令,就輕鬆搞定了: