正則表達式和grep
正則表達式分為兩類:基本正則表達式和擴展正則表達式。
基本正則表達式元字符:
字符匹配:
.:匹配任意一個字符。
[]:匹配[]中指定範圍內的任意一個字符。
[^]:指定範圍外的任意一個字符;也可以得知,在[]括號內,^表示取反。
次數匹配:
*:其前面字符出現任意次。
\?:其前字符出現0或1次;
\{m,n}:其前字符出現最少m次,最多出現n次。如果沒有上限,n可不寫,若至少出現0次,m為0.既m不可省略。
.*:其前出現任意長度的任意字符。
字符牟定:
^:行首牟定。
&:行尾牟定。
\< 或 \b:牟定單詞在行首
\> 或 \b:牟定單詞在行尾
\(\):用於分組。後向引用:\1,\2,\3 ...表示引用第n對小括號內的內容
grep:則支持使用基本正則表達式定義的模式來過濾文本的命令。
-i:忽略匹配字母的大小寫;
-v:反向匹配,顯示為匹配的內容
-o:只顯示匹配到的內容
--color:顏色顯示
-E=eprep:使用擴展正則進行匹配。
-A 數字、-B 數字、-C 數字:-A(after)表示不止顯示匹配行,同時顯示匹配到的後面N行。-B(before)表示同時顯示匹配前N行,-C表示同時顯示前N行和後N行
更多選項用man 進行查看。
說明一下,基本正則表達式工作在貪婪模式下。
擴展正則表達式
字符匹配,位置牟定:與基本正則相同
.
[]
[^]
次數匹配:
*:與基本正則相同,其前面字符出現任意次。
?:與基本正則相同,其前字符出現0或1次;
+:多了一個 + 表示匹配其前字符至少一次。相當於\{1,\} ?+=*
{m,n}:擴展正則中不需要使用\進行轉意
分組與
():分組
\1,\2,\3 ... 後向引用
或者
| :|前後各為一個整體。例如 abc|dec:表示abc 或者 dec.可使用 egrep --color 進行驗證。若要表示c 或者d 可是要(),ab(c|d)ec
正則表達式和grep