歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux grep命令學習與總結

Linux grep命令學習與總結

日期:2017/2/28 14:26:57   编辑:Linux教程

一、grep簡述
grep命令是Linux中強大的文本搜索工具,那麼grep取名是怎麼來的呢?

grep : g (globally) search for a re (regular expression) and p (print ) the results

從上面的英文解釋中可以看出,grep命令使用正則表達式搜索文本,並把匹配的行打印出來

二、grep使用格式
grep [OPTION]... PATTERN [FILE]...

三、OPTION
-i:匹配時不區分大小寫進行匹配。
-w:匹配時只匹配整個單詞,而不是字符串的一部分(如PATTERN='she'時匹配單詞she,而不匹配shell)

-h:輸出時每行行首不顯示文件名。
-H:輸出時每行行首顯示文件名。
-n:輸出時每行顯示行號。
-c:輸出時只顯示每個文件匹配行計數。
-L:輸出時只顯示不包含匹配項的文件名。
-l:輸出時只顯示包含匹配項的文件名。
-o:輸出時每行只顯示匹配項內容

-s:忽略錯誤信息。
-v:逆向匹配,選擇不匹配的行。

-A:After的意思,顯示匹配項後n行的數據
-B:before的意思,顯示匹配項前n行的數據
-C:顯示匹配字符串前後各n行的數據
--color:以特定顏色高亮顯示匹配項內容

--color選項是個非常好的選項,可以讓你清楚匹配上哪些字符。

最好在自己的.bashrc文件中加入:

alias grep='grep --color=auto'

再以source .bashrc來立即生效即可這樣在每次grep搜索之後,自動高亮匹配效果了。

grep 'she' test.txt
grep -i 'she' test.txt
grep -c 'she' test.txt
grep -in 'she' test.txt
grep -v 'she' test.txt
grep -w 'she' test.txt
grep -o 'she' test.txt
grep -C 2 'she' test.txt

著重說下-o參數

假如grep 'she' test.txt輸出為

she is beautiful
I like she


則grep -o 'she' test.txt輸出為

she
she

意思就是只顯示匹配項部分,行中其它部分不顯示

另說明下,PATTERN是正則表達式,為了避免shell的元字符對正則表達式的影響,請用單引號('')括起來,不要用雙引號括起來("")或者不括起來。

四、PATTERN

基本正則表達式

字符含義實例 \ 轉義字符 ^ 錨定行的開始 '^help'匹配以help開頭的行 $ 錨定行的結束 'help$'匹配以help結尾的行 . 匹配任意一個非換行符的字符 'he.p'匹配help,heap等,但不能匹配hep * 前面的字符重復0到多次 'he*p'匹配hp,hep,heep等 [list] 匹配字符集中的一個字符 '[hk]elp'匹配help,kelp [n1-n2] 匹配字符范圍中的一個字符 '[a-z]elp'匹配aelp,belp,...,zelp [^list] 匹配字符集以外的一個字符 '[^a-d]elp'不匹配aelp,belp,celp,delp。可匹配eelp,help, elp等 \{n1,n2\} 前面的字符重復n1-n2次 'h\{1,3\}elp'匹配help,hhelp,hhhelp \< 錨定單詞的開始 '\<h'匹配以h開頭的單詞。匹配help,但不匹配while \> 錨定單詞的結尾 'p\>'匹配以p結尾的單詞。匹配help,但不匹配person

特別說明:^在PATTERN開始位置出現才表示錨定行的開始,其它位置出現只是作為^字符。
例如:
grep '^help' test.txt 表示匹配以help開頭的行
grep 'help^' test.txt 表示匹配包含字符串help^的行
同理,$在PATTERN末尾位置出現才表示錨定行的結束,其它位置出現只是作為$字符。
PATTERN為'^$'表示空行,因為只有行首和行尾

\{n1,n2\}中n2可省略,表示前面字符重復n1至多次,重復次數不設上限

擴展正則表達式
grep一般情況下支持基本正則表達式,可以通過參數-E支持擴展正則表達式,另外grep單獨提供了一個擴展命令叫做egrep用來支持擴展正則表達式,這條命令和grep -E等價。

擴展正則表達式

字符含義實例 + 前面的字符重復1到多次 'he+p'匹配hep,heep,heeep等,但不匹配hp ? 匹配0或1次前面的字符 'he?p'匹配hp,hep | 或的方式匹配多個字串 'help|heap'匹配help,heap () 匹配整個括號內的字符串

'(help)+'匹配help,helphelp等,注意與'help+'的區別

grep使用簡明及正則表達式 http://www.linuxidc.com/Linux/2013-08/88534.htm

Linux下Shell編程——grep命令的基本運用 http://www.linuxidc.com/Linux/2013-06/85525.htm

grep 命令詳解及相關事例 http://www.linuxidc.com/Linux/2014-07/104041.htm

Linux基礎命令之grep詳解 http://www.linuxidc.com/Linux/2013-07/87919.htm

設置grep高亮顯示匹配項 http://www.linuxidc.com/Linux/2014-09/106871.htm

Copyright © Linux教程網 All Rights Reserved