Linux基礎系列(一)grep文本搜索工具

Mark: 本系列博文只是記錄做者在Linux學習過程當中的點點滴滴,新手可能參考,高手們就略過吧!!!git


Linux學習總結:grep文本搜索工具正則表達式

 

功能:根據用戶指定的文本模式(搜索條件)對目標文件進行逐行搜索,並把匹配的行打印出來,它的全稱爲「Global Regular Expression Print」,全局正則表達式,它默認是開放給全部用戶。ide

 

語法格式:Grep [option] pattern file工具

 

Option:命令選項,具體包含:學習

 

-v: --revert-match 反向選取,顯示不包含匹配文件的全部行;spa

-i: --ignore-case 忽略字符大小寫;3d

-c: --count 計算符合樣式的列數regexp

-E: --extended-regexp 支持使用正則表達式;blog

-A: --after-context 除了顯示符合範本樣式的列以外,並顯示該行以後的內容get

-B: --before-context除了顯示符合範本樣式的列以外,並顯示該行以前的內容

-C: --context除了顯示符合範本樣式的列以外,並顯示該行以前後的內容

-n: --line-number 在顯示符合樣式的那一行以前同時標記出該行的列數編號;

 

實例1、顯示文件「/tmp/testin.sh」裏面不包含「Linux」的全部行

命令:grep –v–n 「Linux」 /tmp/testin.sh

wKioL1aA7XzRlaFvAABEjxAlSQg539.png


實例2、查詢文件「/tmp/testin.sh」裏關鍵字「Linux」不區分大小寫的全部行

命令:grep -v -n "Linux" /tmp/testin.sh

wKioL1aA5jjAOhK5AAA9NOARD9s711.png


實例3、顯示包含大小寫「Linux」關鍵字的全部行,並計算總數

命令:grep -v -n -c "Linux" /tmp/testin.sh

wKioL1aA5oaBR3wCAAAOHJVKJAo806.png


正則表達式:是一類字符所書寫的模式,其中許多字符不表示其字面意義,而是表達控制或通配等功能。

 

正則表達式元字符,其中:

 

字符匹配:

「.」  : 匹配任意單個字符,如」grep.p」匹配grep後接一個任意字符;

「[]」  : 匹配指定範圍內的任意個字符,如」[Gg]rep」匹配Grep grep;

「[^]」 : 匹配不在指定範圍內的任意個字符,如」[^a-z]grep」匹配不包含」a-z」的字母開頭,緊接着grep

 

位置錨定:

「^」 : 行首定位符,」^grep」匹配全部以grep開頭的行;

「$」 : 行尾定位符,」grep$」匹配全部以 grep結尾的行;

「^$」: 空白行;

「\<」: 錨定單詞的開始,如:」\<grep」匹配包含以」grep」開頭的單詞的行;

「\>」:錨定單詞的結束,如:」grep\>」匹配包含以」grep」結尾的單詞的行;

 

次數匹配:

「*」    : 匹配零個或多個字符,如」*grep」匹配全部一個或者多個空格後接着grep的行;

「.*」   : 匹配任意字符;

「\?」   : 零次或者壹次,前面的字符無關緊要,如」gr\?ep」,表明能夠是grepep

「\{m\}」 : 重複m次,如」grep\{2\}」,匹配包含至少2」grep」的行;

「\{m,\}」: 重複字符至少m次,如」grep\{2,\}」匹配至少有2grep的行;

「\{m,n\}」: 重複字符至少m次,至多n次,如」grep\{2,3\}」匹配23grep的行;

 

POSIX字符:

[:alnum:] :文字數字字符;

[:alpha:] : 文字字符;

[:digit:] : 數字字符;

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

[:lower:] : 小字字符;

[:print:] : 非空字符,包括空格;

[:space:] : 全部空白字符(新行、空格、製表符);

[:upper:] : 大寫字符;

[:punct:] : 標點符號;


實例4、顯示文件「/tmp/test.grep」中單詞爲「Grep」、「grep

命令:grep –n 「[Gg]rep」 /tmp/test.grep

wKiom1aA5zyDryLuAABV82Vn9t0706.png


實例5、顯示文件「/tmp/test.grep」中以「grep」開頭的行

命令:cat /tmp/test.grep | grep ^grep

wKiom1aA6sGB4wyBAAAk5pdA23Y817.png


實例6、顯示文件「/tmp/test.grep」中以「grep」結尾的行

wKiom1aA60LCl-1KAAAlPWfcNJI219.png


實例7、顯示/tmp/test.grep中以致少一個空白字符結尾的行;

命令:grep -n "[[:space:]]\{1,\}$" /tmp/test.grep

wKioL1aA6_PyfN_wAABCs9OK8VU104.png


待續!

相關文章
相關標籤/搜索