[Linux] 使用 sed 一次取代兩種以上的 pattern
平常用 sed,就是很直覺的用像下面的方式來取代字串:
sed -i 's/old text/new text/' file.txt
但如果有兩種以上的 pattern 要取代呢?
比如說,我想把 old text 換成 new text 以外,還想把 orange 換成 apple,
當然這可以用 | 的方式串接兩個 sed 完成,不過有點多餘…
查了一下,果然 sed 有支援多種 pattern,只要每個 pattern 前都加上 -e 選項就可以了,
(事實上只有一個 pattern 時應該也要加 -e,只是可以省略)
因此上面的需求就可以用下面的敘述完成:
sed -i -e 's/old text/new text/' -e 's/orange/apple/' file.txt
參考資料:Unix Sed Tutorial: How To Execute Multiple Sed Commands
(本頁面已被瀏覽過 1,856 次)