模式標誌 - 發生更換

如果我們只想替換一行中的第一個匹配項,我們像往常一樣使用 sed

$ cat example
aaaaabbbbb
aaaaaccccc
aaaaaddddd
$ sed 's/a/x/' example
xaaaabbbbb
xaaaaccccc
xaaaaddddd

但是如果我們想要替換所有事件呢?

我們只是在最後新增 g 模式標誌:

$ sed 's/a/x/g' example
xxxxxbbbbb
xxxxxccccc
xxxxxddddd

如果我們想要替換一個特定的事件,我們實際上可以指定哪一個:

$ sed 's/a/x/3' example
aaxaabbbbb
aaxaaccccc
aaxaaddddd

/3 是第 3 次出現。

Version = GNU sed

info sed,請參閱 GNU sed 手冊以獲取線上版本

POSIX 標準沒有規定混合 g 和 NUMBER 修飾符時應該發生什麼,目前在 sed 實現中沒有廣泛認可的含義。對於 GNU sed,互動被定義為:忽略 NUMBERth 之前的匹配,然後匹配並替換 NUMBERth 上的所有匹配。

$ sed 's/b/y/2g' example
aaaaabyyyy
aaaaaccccc
aaaaaddddd

$ sed 's/c/z/g3' example
aaaaabbbbb
aaaaacczzz
aaaaaddddd