[Linux] 使用 sed 一次取代兩種以上的 pattern

[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,841 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料