Shell
sed 與就地參數的多個表達式
我正在嘗試使用替換文件中的多個單詞
sed -i #expression1 #expression2
文件
Something 123 item1 Something 456 item2 Something 768 item3 Something 353 item4
輸出(所需)
anything 123 stuff1 anything 456 stuff2 anything 768 stuff3 anything 353 stuff4
試穿
sed -i
我可以通過使用兩次得到以下輸出。sed -i 's/Some/any/g' file sed -i 's/item/stuff/g' file
我可以有任何可能的方法將其作為單個就地命令,例如
sed -i 's/Some/any/g' -i 's/item/stuff/g' file
當我嘗試上面的程式碼時,它會
s/item/stuff/g
作為一個文件並嘗試處理它。
根據
sed
您系統上的版本,您可以執行sed -i 's/Some/any/; s/item/stuff/' file
您不需要此處命令
g
中最後一個斜杠之後的s
內容,因為您每行只進行一次替換。或者:
sed -i -e 's/Some/any/' -e 's/item/stuff/' file
或者:
sed -i ' s/Some/any/ s/item/stuff/' file
該
-i
選項(一個 GNU 擴展現在被其他一些實現支持,儘管有些需要-i ''
代替)告訴sed
編輯文件;如果緊隨其後有字元,-i
則sed
備份原始文件並將這些字元用作備份文件的副檔名。例如,sed -i.bak 's/Some/any/; s/item/stuff/' file
或者
sed -i'.bak' 's/Some/any/; s/item/stuff/' file
將修改
file
,保存原來的file.bak
。當然,在 Unix(或類 Unix)系統上,我們通常使用 ‘~’ 而不是 ‘.bak’,所以
sed -i~ 's/Some/any/;s/item/stuff/' file