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...