grep

     grep是linux使用最廣泛的命令之一。grep允許對文本文件進行模式查找。如果找到匹配的模式,grep會打印包含模式在內的所有行,grep可分爲3種模式進行討論,grep的三種變形:

  • 基本正則表達式---grep

  • 可擴展的正則表達式----egrep

  • 非正則表達式部分---fgrep

    wKioL1MF9c7iMn_dAABs8rUIFvk137.jpg


第一部分 基本正則表達式--grep

 1       “ . ”  表示任意單個字符

wKioL1MF9ZXRT95BAAF6p4WdiHI971.jpg

2  ” * “  表示緊挨其前面字符出現任意次,至少別匹配一次

wKiom1MF9kbgILegAAB_i9b8gpM899.jpg

可以看出b前的至少要有一個a,沒有a的就匹配單個b

3.  ”  .*  “ 表示任意字符任意內容(a和b之間任意字符都可以匹配到)

wKioL1MF9ruD3RvFAAB7glhwvAo060.jpg

4    ^ 和$表示行首和行尾

wKioL1MF9yHxAoCUAABmrNVVFuU090.jpg

wKiom1MF90fDKfzjAABxa5HEMdQ406.jpg

5  ^$ 表示空白行(空行,一般可以通過吧空行過濾出來,來除去文件的空行)

6   \?這個和 * 的用途是一樣的------

wKiom1MF9-Tjj-t5AACBDUZllaY536.jpg

7.  \{m,n\} 表示比配前面字符至少m次,至多n次

wKioL1MF-Afg9z0xAABvZqfFQ78279.jpg

當m=0次時,匹配的就沒有下限了,可以沒有前面的呢個字符

當n=0時,匹配就沒有上限,只要有都算在匹配的內容之內

8.  \<\>字符集的錨定,所截取一定是完整的單詞

wKiom1MF-mrxw7VRAAHbelBrv-o160.jpg

9. 表示分組-----\(patter\)這樣的可是,匹配這字符集的內容

wKioL1MF-vqyefN6AAByfjSKYvo147.jpg

[ ] 和[ ^ ] 表示中括號內的內容和非中括號的內容

wKiom1MF-2qRjqn5AAGAnn6s5Yo216.jpg

wKioL1MF-0SAOGv8AACAnDZ3wUo393.jpg

[:space:]-----表示空白行,這個和^$有很大的區別,^$本能作爲一個字符去匹配但是space可以,例如檢索/etc/inittab中

wKiom1MGAVrjp2gPAAGS3P4-tgE528.jpg

[:lower:]-----表示所有小寫字母

[:upper:]-----表示所有大寫字母

[:digit:]-----表示所有數字

[:punct:]-----表示任意標點符號

[:alnum:]-----表示任意字母(不分大小寫)

[:alpha:]------表示任意字母和數字


第二部分  擴展的正則表達式(這裏就不舉例子了,其實和grep十分相似)

1. +   表示匹配前一個至少一次,和*以及\?用法是一樣的

2.  ? 實際上就是\? 去掉了轉譯符

3.{n,m}  和grep的\{n,m\}是一樣的

4. a|b 或匹配這個是可以多選一的

wKioL1MGAVKjW--_AAEm4r6Fabg712.jpg

加上了()才表示單個字母的或,不然就會表示成a和baa之間的或關係了

5.\<\>和grep是相同的

6.\(\)分組匹配和grep也是相同的


第三部分  grep --option

--color=auto 表示匹配的部分加上顏色

-v  表示出了匹配內容以外的所有內容(可以用這個去除空行)

-o  表示只顯示匹配的內容,多餘的不部分不顯示

-A+數字#     表示顯示匹配的行的下面#行

-B+數字#      表示顯示匹配的行的上面#行

-i    表示匹配時不分大小寫

-r     表示遞歸搜索

grep  -E == egrep

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