正規表示式是一種符號表示法,用於識別文字模式。 Linux 處理正規表示式的主要程式是 grep 。 grep 搜尋與正規表示式匹配的行,並將結果輸送至標準輸出。
1. grep 匹配模式
grep 按下述方式接受選項和引數 (其中,regex 表示正規表示式)
grep [options] regex [files]
其中 options 主要為下表:
選項
含義
功能描述
-i
ignore case
忽略大小寫
-v
invert match
不匹配匹配的
-l
file-with-match
輸出匹配的檔名
-L
file-without-match
輸出不匹配的檔名
-c
count
輸出匹配的數目(行數)
-n
number
輸出匹配行的同時在前面加上檔名及在檔名中的行數
-h
no-filename
抑制檔名的輸出
舉例說明
假設有三個檔案 del1 、 del2 、 del3 三個檔案的內容如下
例子
2. 特殊字元
符號
含義
舉例
^
開始標記
“^abc” 滿足的例子 abc 、 abcd
^
非(在 [] 內)
“[^abc]” 滿足的例子:ddd 、 mpd
$
結束標記
”abc$” 滿足的例子 abc 、 mmabc
.
任意字元
“a.c” 滿足的例子 abc 、 fapcc
<
匹配單詞開始
“
匹配單詞結束
“abc>” 滿足的例子 abc 、 pmrabc
|
或
“AAA|BBB” 滿足的例子 AAA 、 BBBpp
3. 範圍
符號
含義
舉例
?
匹配前一個字元 0 或 1 次
“abc?” 滿足的例子 ab 、 mabcd
*
匹配前一個字元≥0 次
“abc*” 滿足的例子 abbb 、 abcdk
+
匹配前一個字元≥1 次
“abc+” 滿足的例子 abcd 、 abcccdd
{}
{m} 、 {m,n} 、 {m,} 、 {,n} 分別為匹配前一個字元 m 次、 m 到 n 次、≥m 次、≤n 次
“abc{3,5}” 滿足的例子 abcccc 、 abcccccc
[]
[] 內如果不是範圍,選其一;是範圍的話,範圍內選其一
“m[abc]p” 滿足的例子 acpd;m[1-9]p 滿足的例子 m8pp
()
將候選的所有元素放在 () 內,用|隔開
“a(1|2|3)bc” 滿足的例子 a1bc 、 mba3bcd
注意:{} 在鄭則表示式中需要轉移,而 {}() 不需要。
注意理解 {} 範圍的例子:
4. 標準字元類
字元類
釋義
[:alnum:]
字母和數字,與 [A-Za-z0-9] 等價
[:word:]
[:alnum:] 加上下劃線_
[:alpa:]
字母,與 [A-Za-z] 等價
[:digit:]
數字,與 [0-9] 等價
[:xdigit:]
十六進位制字元,與 [0-9A-Fa-f 等價]
[:blank:]
空格和製表符
[:graph:]
可見字元,靠擴 33~126
[:lower:]
小寫字母
[:upper:]
大寫字母
[:print:]
可列印字元
[:space:]
空白字元,等價於 [trnvf]
[:punct:]
標點符號
[:cntrl:]
ASCII 控制碼,包括字元 0~31 以及 127
例子