正則表達式
正則表達式 由 元字符 、普通字符 、元字符 和普通字符 組成正則表達式
語法格式
grep [選項] '正則表達式' 文件列表
命令 | grep [選項] '正則表達式'ssh
-------------------------------------------------------
ps aux | grep sshd
grep root /etc/passwdide
選項?
--color 標紅顯示匹配字串
-q 靜默,無任何輸出,通常用於檢測
-c 統計匹配的行數
-n 顯示出匹配結果所在的行號
-v 條件取反
-i 忽略字母大小寫
-E 使匹配條件轉義(或者用egrep)ip
元字符 有哪些?
^ 匹配行首
$ 匹配行尾
. 任意單個字符(不包括換號符號 \n)
----------------------------------------------------------------------
定義前邊的正則表達式出現的次數it
\+ 前邊的正則表達式出現1次到屢次
\? 前邊的正則表達式出現0次到1次
* 前邊的正則表達式出現0次到屢次
----------------------------------------------------------------------class
\(\) 把正則表達式作爲總體匹配語法
----------------------------------------------------------------------
\{\} 限定前邊正則表達式出現的次數grep
{N}前邊正則表達式必須出現N次
{N,}前邊正則表達式至少出現N次
{N,M}前邊正則表達式至少出現N次 最多出現M次
----------------------------------------------------------------------
[ ] 範圍內匹配,範圍內任意一個字符 (次數是一次)
[a-z] 匹配全部小寫字母
[A-Z] 匹配全部大寫字母統計
[a-Z]
[a-zA-Z] 匹配全部大小寫字母di
[279]
[0-9] 匹配全部數字
[a-Z0-9] 匹配全部大小寫字母和數字
^[ ] 以範圍內的開頭
^[a-z]
^[0-9]
^[169]
^[afw]
[ ]$ 以範圍內的結束
^[a-c][0-9]$
[^ ] 範圍內取反
^[^a-Z0-9] 匹配以符號開頭的行
------------------------------------------------------------
\| 或
grep --color '^root\|^daemon' /etc/passwd 列出以root或者以daemon開頭的行
grep --color '^[rd]' /etc/passwd 列出以r或者以d開頭的行
----------------------------------------------------------------------
\< 單詞的開頭
\> 單詞的結束
head -5 /etc/httpd/conf/httpd.conf | grep --color '\<c' 列出以帶c開頭的單詞的行
head -5 /etc/httpd/conf/httpd.conf | grep --color 's\>' 列出以帶s結尾的單詞的行
\b 單詞邊界
grep --color '\btom' d.txt 單詞左邊包含tom的行
grep --color 'tom\b' d.txt 單詞右邊包含tom的行
grep --color '\btom\b' d.txt 單詞只包含tom的行 邊界無其餘字符
---------------------------------------------------------------------
XX:XX:XX:XX:XX:XX
grep -E --color '([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}' mac.txt
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C DEF
grep --color '\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}' mac.txt
---------------------------------------------------------------------
ip的正則表達式(括號的大小寫很嚴格,點須要轉義)
grep -E '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){2}([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$'