Linux grep
一、基本用法
grep是linux中很常用的一個命令,主要功能就是進行字串資料的對比,能使用正規表示式搜尋文字,並將符合使用者需求的字串列印出來。grep全稱是Global Regular Expression Print,表示全域性正規表示式版本,它的使用許可權是所有使用者。grep在資料中查詢出一個字串時,是以整行為單位來進行資料選取的。
1、命令格式
grep [cinvs] 'patten' filename
2、主要引數
-c:只輸出匹配行的計數。
-i:不區分大小寫(只適用於單字元)。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文字的錯誤資訊。
-v:顯示不包含匹配文字的所有行。
--o: 只顯示正則匹配的文字
3、patten
要搜尋的關鍵字或正規表示式語句,正規表示式參見後文。
4、簡單例項
#netstat -nap|grep 80
上面命令查詢監聽80埠的行。
#grep -n "world" hello.txt
查詢檔案hello.txt中含有"world"字串的行,並顯示行號。
#grep -n "printf" main.c hello.c world.c
在原始碼檔案main.c、hello.c和world.c中查詢呼叫了printf函式的行,並顯示行號。
#grep -n "printf" *
在當前目錄的所有檔案中查詢呼叫了printf函式的行,並顯示行號。也可以指定路徑,比如:/usr/local/include/*。
#grep -r "printf" *
在當前目錄及所有子目錄下遞迴查詢呼叫了printf函式的行,並顯示行號。
二、正則用法
grep patten正規表示式主要元字元及使用如下表:
元字元 |
功能 |
例子 |
匹配什麼 |
^ |
錨定行的開始 |
/^love/ |
匹配所有以love開頭的行 |
$ |
錨定行的結束 |
/love$/ |
匹配所有以love 結束的行 |
. |
匹配一個字元 |
/l..e/ |
匹配這樣的行,這些行包含這樣的字元:第一個字元是l,緊跟著兩個字元,然後是e |
* |
代表0個或多個先前字元 |
/*love/ |
匹配所有這樣的行,有0個或多個空格,空格後跟著love |
[] |
匹配字元組中的一個字元 |
/[Ll]ove/ |
匹配所有包含love或者Love的行 |
[^] |
匹配一個不在範圍內的字元 |
/[^A-Z]ove/ |
|
< |
錨定單詞的開始 |
|
匹配所有這樣的行,這些行包含以love開頭的單詞(vi和grep支援這個功能) |
> |
錨定單詞的結束 |
Love> |
匹配所有這樣的行,這些行包含以love結束的單詞(vi和grep支援這個功能) |
(..) |
標記後面用到的匹配字元 |
/(love)able1rs/ |
最多可以使用9個標籤。第一個標籤是模板最左邊的部分。在本例子中,模板love儲存的標籤為1,後面的1指得就是love;本例子搜尋的是這樣的行,這些行包含這樣的字元,在Loveabel後面跟著lovers |
x{m} |
M次複製字元x |
||
x{m,} |
至少m次複製字元x |
||
x{m,n} |
至少m次,至多n次複製字x |
||
w |
文字和數字字元,[A-Za-z0-9] |
Lw*e |
匹配一個L字元,緊跟著0個或多個文字或數字字元,然後是e |
W |
同上 |
||
b |
單詞分界線 |
bloveb |
僅僅匹配單詞love |
簡單例項如下:
#ls -l | grep '^a'
透過管道過濾ls -l輸出的內容,只顯示以a開頭的行。
#grep 'test' d*
顯示所有以d開頭的檔案中包含test的行。
#grep '[a-z]\{5\}' aa
顯示所有包含每個字串至少有5個連續小寫字元的字串的行。
#grep 'w\(es\)t.*\1' aa
如果west被匹配,則es就被儲存到記憶體中,並標記為1,然後搜尋任意個字元(.*),這些字元後面緊跟著另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用"\"號進行轉義,直接寫成'w(es)t.*\1'就可以了。
三、其它家族
grep家族除了有grep命令外,還包括egrep和fgrep。
egrep是grep的擴充套件,支援更多的正則元字元,具體如下:
+ |
匹配一個或者多個先前字元 |
[a-z]+ove |
匹配一個或者多個小寫字元且後面是ove的, |
? |
匹配0個或者多個先前字元 |
Lo?ve |
匹配L後面有一個或者沒有o,然後是ve |
a|b|c |
匹配a或b或c |
Love|hate |
匹配love或hate其中一個 |
() |
字元組 |
Love(able|rs)(ov)+ |
匹配loveable或lovers,匹配一個或多個ov |
(…)(…)12 |
標記匹配字串 |
(love)ing |
標籤標記出暫存器的一部分,並稍後替換模板。該模板叫做1,並可反覆引用。在表示式中最多可以使用9個這樣的標籤。例如,模板love被儲存在暫存器1中並稍後替換標籤叫做1 |
x{m} |
重複字元X,m次,至少m,或者m次和n次之間。 |
||
x{m,} |
|||
x{m,n} |
fgrep是fixed grep或fast grep,它把所有的字母都看作單詞,即正則元字元不再特殊,而僅僅表示其自身的字母意思。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29446986/viewspace-1406054/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux grep 命令Linux
- linux-grepLinux
- 【Linux】grep命令Linux
- linux命令之grepLinux
- 【Linux命令】grep命令Linux
- Linux - find與grepLinux
- Linux命令篇 - grep 命令Linux
- linux中grep基本用法Linux
- Linux基礎命令---grepLinux
- Linux grep命令的使用Linux
- linux grep命令詳解Linux
- linux命令: ps,grep,killLinux
- Linux命令grep詳解Linux
- linux每日命令(35):grep命令Linux
- 【Linux】ps -ef|grep詳解Linux
- Linux命令:grep命令AND、OR、NOT例項Linux
- linux下的find 和 grepLinux
- Linux grep命令詳細教程Linux
- 【Linux】find指令和grep指令!!!Linux
- linux grep 正規表示式Linux
- Linux日誌搜尋 grepLinux
- Linux系統中grep如何使用?Linux
- Linux篇---Grep和正則匹配Linux
- Linux 常用基本命令 cat grepLinux
- Linux grep,sed,sort,uniq學習Linux
- 14 個 Linux grep 命令的例子Linux
- linux9-grep&wc&管道符Linux
- Linux三劍客之grep詳解Linux
- Linux常用命令記錄-grepLinux
- Linux基礎命令—顯示文字grepLinux
- 掌握Linux中的12個grep命令Linux
- 如何使用 Linux 的 grep 和 fgrep 命令Linux
- Linux grep命令有何作用?如何使用?Linux
- Linux三劍客grep、awk和sedLinux
- Linux常用指令---grep(搜尋過濾)Linux
- Linux 文字處理工具(grep sed awk )Linux
- Linux grep命令和正規表示式Linux
- linux下grep命令用法例項教程Linux