模式標誌 - 發生更換
如果我們只想替換一行中的第一個匹配項,我們像往常一樣使用 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
實現中沒有廣泛認可的含義。對於 GNUsed
,互動被定義為:忽略 NUMBERth 之前的匹配,然後匹配並替換 NUMBERth 上的所有匹配。
$ sed 's/b/y/2g' example
aaaaabyyyy
aaaaaccccc
aaaaaddddd
$ sed 's/c/z/g3' example
aaaaabbbbb
aaaaacczzz
aaaaaddddd