【APP】Linux運維利器--Grep命令及正則表達式

grep, egrep, fgrepgit

grep: 根據模式搜索文本,並將符合模式的文本行顯示出來。正則表達式


總結內容:ide

一、grep經常使用參數spa

二、grep正則表達式元字符集(基本用法)及高級用法遞歸

三、與正則相關的POSIX特殊字符類字符串


語法:grep [options]PATTERN [FILE...]it



grep中經常使用的幾個參數:io

-r  遞歸匹配class

-E  高級擴展功能與egrep功能類似擴展

-i  忽略大小寫差異

-v  反向匹配,只顯示不匹配的行

-w 若是被\<和\>引用,就把表達式作爲一個單詞搜索(單詞匹配)

:netstat -ntlp |grep"\<80\>"

   grep -w'main' /usr/include/*.h

-n  顯示匹配行及行號

-l   用於多文件查找,查詢多文件時只輸出包含匹配字符的文件名

grep -l -r -i -w 'filename_max' /usr/include/*.h

--color  高亮顯示匹配

-c  只打印匹配的行數,不顯示匹配的內容

-o:只顯示被模式匹配到的字符串




grep正則表達式元字符集(基本用法)

匹配次數(貪婪模式):
. 匹配一個非換行符的字符 如:'gr.p'匹配gr後接一個任意字符,而後是p。
* 匹配零個或多個先前字符 如:'*grep'匹配全部一個或多個空格後緊跟grep的行。

.* 一塊兒用來表示任意字符。
\?  匹配其前面的字符1次或0次。

x\{m\} 連續重複字符x,m次,如:'o\{5\}'匹配包含連續5個o的行。
x\{m,\} 連續重複字符x,至少m次,如:'o\{5,\}'匹配至少連續有5個o的行。
x\{m,n\} 連續重複字符x,至少m次,很少於n次,如:'o\{5,10\}'匹配連續5--10個o的行。

元字符:
[] 匹配一個指定範圍內的字符,如'[Gg]rep'匹配Grep和grep。
[^] 匹配一個不在指定範圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。



位置錨定:

^: 錨定行首,此字符後面的任意內容必須出如今行首

$: 錨定行尾,此字符前面的任意內容必須出如今行尾
\<或\b  錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。
\>或\b  錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。

分組:

\(\)

       \(ab\)*

       後向引用

       \1: 引用第一個左括號以及與之對應的右括號所包括的全部內容

       \2:

       \3:


\w 匹配一個文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字符,而後是p。
\W w的反置形式,匹配一個非單詞字符,如點號句號等。\W*則可匹配多個。
\b 單詞鎖定符,如: '\bgrep\b'只匹配grep,即只能是grep這個單詞,兩邊均爲空格。



多個關鍵字查找


1.1 使用-e

grep -e 'stdio\.h' -e 'stdlib\.h' /usr/include/*.h

1.2 使用-f file

將關鍵字以行方式保存在一個文件中

1.3 使用元字符 \|

grep 'stdio\.h\|stdlib.h' /usr/include/*.h


關於egrep和grep -E的高級用法:

+  匹配一個或多個先前的字符。如:'[a-z]+able',匹配一個或多個小寫字母后跟able的串,如loveable,enable,disable等。  

?  匹配零個或多個先前的字符。如:'gr?p'匹配gr後跟一個或沒有字符,而後是p的行。  a|b|c  匹配a或b或c。如:grep|sed匹配grep或sed   

() 分組符號,如:love(able|rs)ov+匹配loveable或lovers,匹配一個或多個ov。  x,x{m,},x{m,n}   做用同x\{m\},x\{m,\},x\{m,n\}



POSIX特殊字符類:能夠經過 man 7 glob查看。。。

[:alpha:]   文字字符   [A-Za-z]

[:digit:]   數字字符   [0-9]

[:graph:]   非空字符(非空格、控制字符)

[:lower:]   小寫字符  [a-z]

[:upper:]   大寫字符  [A-Z]

[:alnum:]   [0-9a-zA-Z]

[:cntrl:]   控制字符 

[:print:]   非空字符(包括空格)

[:punct:]   標點符號

[:space:]   全部空白字符(新行,空格,製表符),製表符還能夠用\t表示

[:xdigit:]   十六進制數字和字母(0-9,a-f,A-F)

咱們在用時要這樣用:[[:alpha:]],若是取反就是[^[:digit:]]


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


正則表達式:

Basic REGEXP:基本

Extended REGEXP:擴展


PS: 這裏再也不作詳細說明!!!!!!!!!


基本正則表達式:

.:

[]:

[^]:


次數匹配:

*:

\?: 0或1次

\{m,n\}:至少m次,至多n次;


.*:


錨定:

^:

$:

\<, \b:

\>, \b:


反向引用

\(\)

\1, \2, \3, ...



grep:使用基本正則表達式定義的模式來過濾文本的命令;

-i

-v

-o

--color

-E: 使用擴展正則表達式

-A #:

-B #:

-C #:

擴展正則表達式:


字符匹配:

.

[]

[^]


次數匹配:

*:

?:

+: 匹配其前面的字符至少1次

{m,n}


位置錨定:

^

$

\<

\>


分組:

():分組

\1, \2, \3, ...


或者

|: or

C|cat: Cat或cat, C或cat

相關文章
相關標籤/搜索