使用 sed 修改配置檔案
阿新 • • 發佈:2019-02-08
最近寫一些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可以使用其他分割符號的,如下面的命令,就輕鬆搞定了: