grep正則表達式使用

正則表達式:Regular Expression REGEXP

        由一類特殊字符及文本字符所編寫的模式,表示控制或通配的功能

兩類:

    基本正則表達式BRE:

    擴展正則表達式ERE:


*** grep    GLoble search  Regular  exression and  Print out the line

文本過濾(一定模式pattern)2

-v    反向匹配 顯示未匹配到的行

-E    支持擴展正則表達式  egrep

-i    忽略字符大小寫

-o    僅顯示匹配到的字符本身 而不是整行

-q --quiet      靜默模式,不輸出任何信息   可用echo $?查看命令執行情況

-A :after      顯示匹配行及其前n行

B :before     匹配行及其後n行

C :context    匹配行及其前後n行

1.基本正則表達式元字符:

.     任意 單個字符

*     前面字符 任意次 可以不出現 0 - ∞

.*    任意長度 任意字符

\?    其前面字符 0次或一次   可有可無

\+    其前面字符 1次或多次

\{m,n\}   其前面字符m至n次

 \{m\}   指定出現m次   \{,n\}  至多n次

[]   指定範圍內任意單個字符

[^]  指定範圍外的任意單個字符

數字 [:digit:],小寫字母[:lower:],大寫字母[:upper:],字母[:alpha:],

字母數字[:alnum:],標點[:punct:],空格[:space:]

 使用時還需再加[]     [[:digit:]] 任意單個數字

 

2.位置錨定:    指定字符出現位置

^    行首錨定,整個模式最左側

$    行尾錨定,整個模式最右側

^pattern$    用patt匹配整行

^$   空白行  不可包含空格     ^[[:space:]]*$ 空白行或包含任意空格的行

\<或\b     詞首錨定

\>或\b     詞尾錨定

\<pattern\>匹配完整單詞

 

 

3.分組及引用:

\(\)     括號內的字符作爲一組   \(xy\)\+  一個或多個xy 括號可嵌套不可交叉

可用\1   \2   \3  …引用對應分組

 

 

 


*** 擴展正則表達式:          區別grep  部分元字符不用加"\"      增加或 |

    egrep         =>grep -E


1.擴展正則表達式的元字符:

.

[]

[^]

2.次數匹配:        不用加轉義字符  "\"

*

?

+

{m}

{m,n}

3.位置錨定:

^

$

\<,\b

\>,\b

4.分組及引用:

()

後向引用:\1  \2  \3  ...

5.或:

a|b   a或者b    z|Zjj   z或Zjj                (z|Z)jj   zjj或Zjj

 例   匹配1到255

egrep -o '\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\>'

 例   passwd 用戶名與shell相同的行

egrep  "^([^:]+\>).*\1$" /etc/passwd

 

 例   簡單 過濾出ip地址 不嚴謹

egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"

 

 

不支持正則表達式元字符:

fgrep:    fast grep  

用不到元字符時 fgrep更快


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章