Linux - vi replacement

利用 :s 命令可以實現字符串的替換。具體的用法包括:

:s/str1/str2/ 用字符串 str2 替換行中首次出現的字符串 str1
:s/str1/str2/g 用字符串 str2 替換行中所有出現的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替換正文當前行到末尾所有出現的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替換正文中所有出現的字符串 str1
:g/str1/s//str2/g 功能同上

從上述替換命令可以看到:g 放在命令末尾,表示對搜索字符串的每次出現進行替換;
不加 g,表示只對搜索字符串的首次出現進行替換;
g 放在命令開頭,表示對正文中所有包含搜索字符串的行進行替換操作。


Example:
:s/vivi/sky/ 換當前行第一個 vivi 為 sky
:s/vivi/sky/g 換當前行所有 vivi 為 sky
:n,$s/vivi/sky/ 換第 n 行到最後行中每一行的第一個 vivi 為 sky
:n,$s/vivi/sky/g 換第 n 行到最後行中每一行所有 vivi 為 sky
:%s/vivi/sky/ (等同於 :g/vivi/s//sky/) 換每一行的第一個 vivi 為 sky
:%s/vivi/sky/g (等同於 :g/vivi/s//sky/g) 換每一行中所有 vivi 為 sky
:s#vivi/#sky/# 換當前行第一個 vivi/ 為 sky/;使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符
:%s+/oradata/+/user01+ (使用+ 來 替換 / ): /oradata/替換成/user01/
· :%s/^M$//g 刪除文本中的^M

Comments