1. 程式人生 > >linux grep使用

linux grep使用

... 正則表達式引擎 正則表達 包括 打印字符 before 變量 顯示 upper

常用選項:

-E :開啟擴展(Extend)的正則表達式。

-i :忽略大小寫(ignore case)。

-v :反過來(invert),只打印沒有匹配的,而匹配的反而不打印。

-n :顯示行號

-w :被匹配的文本只能是單詞,而不能是單詞中的某一部分,如文本中有liker,而我搜尋的只是like,就可以使用-w選項來避免匹配liker

-c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內容,註意如果同時使用-cv選項是顯示有多少行沒有被匹配到。

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

--color :將匹配到的內容以顏色高亮顯示。

-A n:顯示匹配到的字符串所在的行及其後n行,after

-B n:顯示匹配到的字符串所在的行及其前n行,before

-C n:顯示匹配到的字符串所在的行及其前後各n行,context


模式部分:

匹配字符:

. 匹配任意單個字符

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

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

[:alnum:] 字母和數字

[:alpha:] 代表任何英文大小寫字符,亦即A-Z, a-z

[:lower:] 小寫字母[:upper:] 大寫字母

[:blank:] 空白字符(空格和制表符)

[:space:]水平和垂直的空白字符(比[:blank:]包含的範圍廣)

[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴...)

[:digit:] 十進制數字[:xdigit:]十六進制數字

[:graph:] 可打印的非空白字符

[:print:] 可打印字符

[:punct:] 標點符號



匹配次數:用在要指定次數的字符後面,用於指定前面的字符要出現的次數

* 匹配前面的字符任意次,包括0次

貪婪模式:盡可能長的匹配

.*任意長度的任意字符

\?匹配其前面的字符0或1次

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

\{n\}匹配前面的字符n次

\{m,n\}匹配前面的字符至少m次,至多n次

\{,n\}匹配前面的字符至多n次

\{n,\}匹配前面的字符至少n次



位置錨定:定位出現的位置

^ 行首錨定,用於模式的最左側

$ 行尾錨定,用於模式的最右側

^PATTERN$ 用於模式匹配整行

^$ 空行

^[[:space:]]*$ 空白行

\< 或\b詞首錨定,用於單詞模式的左側

\> 或\b詞尾錨定;用於單詞模式的右側

\<PATTERN\>匹配整個單詞


分組:

\(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(root\)\+

?分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中,這些變量的命名方式為: \1, \2, \3, ...

?\1表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符


linux grep使用