⑴ macosx系統 如何編寫一個shell腳本替換文件中多行中的特定字元串
sed -i '' '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile
mac 上要求你必須對修改的文件進行備份,因此需要你這樣寫代碼
sed -i 'yourfile.back' '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile
如果你不需要備份文件則直接將"yourfile.back"留空即可
⑵ shell腳本定位某個文件中特定位置的字元串並進行替換應該怎麼寫
根據位置替換即可:
readip
sed-ri"/subnet/s/(subnet)[^]+(netmask.*)/1$ip2/"/mnt/file
/subnet/ -先正則匹配到含有subnet的行,然後替換。
替換的時候將不變的部分用小括弧括起來,後面依次用1 , 2 原封不動地引用回來。
-r 選項用於支持擴展正則,這樣就不需要額外的轉義符。
[^] 表示不為空格的任意一個字元,+ 表示重復該字元至少1次。