Linux grep 常規用法小結

2021-08-22 10:18:16 字數 3109 閱讀 7702

grep 最初是乙個基於unix作業系統的命令列工具。在給出檔案列表或標準輸入後,grep會匹配乙個或多個正規表示式的文字搜尋,並輸出匹配(或者不匹配)的行或文字。grep全稱global search regular expression(re) and print out the line即全面搜尋正規表示式並把行列印出來。unix的grep家族包括grep,egrep和fgrep。

功能描述:

這個命令搜尋整個檔案中匹配給定正規表示式的文字行,並顯示出來。有很多不同的命令列用於改變grep的預設行為,包括顯示出不匹配的文字行、查詢或排除搜尋的檔案以及用不同的方式在輸出中進行注釋。同時也有很多經典unix下grep的現代版本,這些版本都有著獨特的功能。

總之就是查詢輸入檔案每一行中匹配的字串。

格式:grep [-acinv] [--color=auto] [-a n] [-b n] '搜尋字串' 檔名 或者 grep [option]

基本引數:

-a:將二進位制文件以文字方式處理

-c:顯示匹配的次數

-i: 忽略大小寫,預設情況下對大小寫敏感的

-n:在行首顯示行號

-a:after的意思,顯示匹配字串後n行的資料

-b:before的意思,顯示匹配字串前n行的資料

-v:顯示沒有匹配行,有取反的意思,如:grep -v 「test」 file.txt 就過濾掉包含test的行,又如:         

find -type d |grep -vw "test" 過濾出test之外的子目錄,反檢索,顯示不匹配的行

-color:以特定顏色高亮顯示匹配的關鍵字

-n:匹配行前面的行號

-w:全詞匹配,如:grep -w 「money」 file.txt 則過濾出包含money單詞的行,而amoney則不

匹配–color選項是個非常好的選項,可以讓你清楚的明白匹配了那些字元。最好在自己的.bashrc或者.bash_profile檔案中加入

alias grep=grep --color=auto

每次搜尋完成之後,自動高亮匹配.

多餘一次匹配多個字串的可以使用命令grep -e "safe|nginx",

而awk方式為:awk '/123|abc/'  filename

關於引數選項的更多用法可以,man grep 即可獲得。

常規正規表示式

正規表示式是對字串操作的邏輯表示,可以用來查詢匹配文字。正規表示式由一般字元和特殊字元組成,特殊字元又稱為元字元,常見的元字元有:

\: 忽略正規表示式中特殊字元的原有含義;

^:匹配正規表示式的開始行,指匹配的字串在行首;

$: 匹配正規表示式的結束行,指匹配的字串在行 尾;

\<:從匹配正則表達 式的行開始;

\>:到匹配正規表示式的行結束;

\>:到匹配正規表示式的行結束;

[ - ]:範圍,如[a-z],即a、b、c一直到z都符合要求 ;

. :所有的單個字元;

* :有字元,長度可以為0;

grep命令的簡單例項

$ grep 『test』 d*

顯示所有以d開頭的檔案中包含 test的行。

$ grep 『test』 aa bb cc

顯示在aa,bb,cc檔案中匹配test的行。

$ grep 『[a-z]\』 aa

顯示所有包含每個字串至少有5個連續小寫字元的字串的行。

$ grep 『wes

t.*\1′ aa

如果west被匹配,則es就被儲存到記憶體中,並標記為1,然後搜尋任意個字元(.*),這些字元後面緊跟著 另外乙個es(\1),找到就顯示該行。如果用egrep或grep -e,就不用」\」號進行轉義,直接寫成』w(es)t.*\1′就可以了。

$ grep b|b aa   ==> $ grep [bb] aa

$ grep -r

明確要求搜尋子目錄

$ grep -d skip

忽略子目錄

$ grep pattern1 | pattern2 files 

顯示匹配 pattern1 或 pattern2 的行

$ grep pattern1 files | grep pattern2

顯示既匹配 pattern1 又匹配 pattern2 的行

\< 和 \> 分別標註單詞的開始與結尾

例如:grep man * 會匹配 『batman』、』manic』、』man』等,

grep 『\』 只匹配』man』,而不是』batman』或』manic』等其他的字串。

匹配出現root的行 

$grep 'root' /etc/group 

root::0:root 

bin::2:root,bin,daemon 

sys::3:root,bin,sys,adm 

adm::4:root,adm,daemon

uucp::5:root,uucp

匹配正規表示式的開始行 

$ grep '^root' /etc/group 

root::0:root

$ grep 'uucp' /etc/group 

uucp::5:root,uucp 

nuucp::9:root,nuucp 

$ grep '\匹配正規表示式的結束行

# grep 'root$' /etc/group  

root::0:root 

mail::6:root

使用類名

可以使用國際模式匹配的類名:

[[:upper:]]   [a-z]

[[:lower:]]   [a-z]

[[:digit:]]   [0-9]

[[:alnum:]]   [0-9a-za-z]

[[:space:]]   空格或tab

[[:alpha:]]   [a-za-z]

例如:grep '5[[:upper:]][[:upper:]]' data.doc     #查詢以5開頭以兩個大寫字母結尾的行

Linux grep命令用法

語法 grep options pattern file.grep用以在file內文中比對相對應的部分,或是當沒有指定檔案時,由標準輸入中去比對。在預設的情況下,grep會將符合樣式的那一行列出。此外,還有兩個程式是grep的變化型,egrep及fgrep。其中egrep就等同於grep e fgr...

linux grep用法大全

原文 在unix中經常會用到grep去選取所需要的資訊,用好grep有時可以到達意想不到的效果。grep g globally search for a re regular expression r r and p print the results.1 引數 i 忽略大小寫 c 列印匹配的行數 ...

學習 Linux grep用法

grep global search regular expression re and print out the line,全面搜尋正規表示式並把行列印出來 root www grep acinv color auto 搜尋字串 filename 選項與引數 a 將 binary 檔案以 tex...