轉載,原文位址如下: http://tanqisen.github.io/blog/2013/01/13/vim-search-replace-regex/
簡單替換表達式
:[range]s/from/to/[flags]
-
: 搜尋範圍,如果沒有指定範圍,則作用于但前行。range
-
表示在第1到第10行(包含第1,第10行)之間搜尋替換;:1,10s/from/to/
-
表示隻在第10行搜尋替換;:10s/from/to/
-
表示在所有行中搜尋替換;:%s/from/to/
-
同上。1,$s/from/to/
-
-
有如下四個選項:flags:
-
confirm,每次替換前詢問;c
-
error, 不顯示錯誤;e
-
globle,不詢問,整行替換。如果不加g
選項,則隻替換每行的第一個比對到的字元串;g
-
ignore,忽略大小寫。i
表示不區分大小寫,整行替換,替換前詢問。cgi
-
正規表達式
- 元字元
-
元 字 符 說 明 . 比對任意字元 [abc] 比對方括号中的任意一個字元,可用
表示字元範圍。如[a-z0-9]比對小寫字母和數字-
[^abc] 比對除方括号中字元之外的任意字元 \d 比對阿拉伯數字,等同于[0-9] \D 比對阿拉伯數字之外的任意字元,等同于[^0-9] \x 比對十六進制數字,等同于[0-9A-Fa-f] \X 比對十六進制數字之外的任意字元,等同于[^0-9A-Fa-f] \l 比對[a-z] \L 比對[^a-z] \u 比對[A-Z] \U 比對[^A-Z] \w 比對單詞字母,等同于[0-9A-Za-z_] \W 比對單詞字母之外的任意字元,等同于[^0-9A-Za-z_] \t 比對
字元<TAB>
\s 比對空白字元,等同于[\t] \S 比對非空白字元,等同于[^\t] - 表示數量的元字元
* 比對0-任意個 \+ 比對1-任意個 \? 比對0-1個 \{n,m} 比對n-m個 \{n} 比對n個 \{n,} 比對n-任意個 \{,m} 比對0-m個 - 表示位置的元字元
$ 比對行尾 ^ 比對行首 \< 比對單詞詞首 \> 比對單詞詞尾 - 一些普通字元需轉意
\*
字元*
\. .
\/ 比對 /
\ \
\[ [
\] ]
-
-
替換變量
在正則式中以
和\(
括起來的正規表達式,在後面使用的時候可以用\)
、\1
等變量來通路\2
\(
中的内容。\)
例子
- 删除行尾空格:
%s/\s+$//g
- 删除行首多餘空格:
或者%s/^\s*//
%s/^ *//
- 删除沒有內容的空行:
%s/^$//
g/^$/d
- 删除包含有空格組成的空行:
%s/^\s*$//
g/^\s*$/d
- 删除以空格或TAB開頭到結尾的空行:
%s/^[ |\t]*$//
g/^[ |\t]*$/d
- 把文中的所有字元串“abc……xyz”替換為“xyz……abc”可以有下列寫法
:%s/abc\(.*\)xyz/xyz\1abc/g :%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g
sed:指定檔案進行替換
sed -i "s/from/to/g" <檔案名>