grep的作用是顯示匹配一個或多個模式的文本行。時常會作為管道(|)的第一步,以便對匹配的數據作進一步處理。grep常用於查找和替換文本的。在傳統上,grep有3個版本:grep、egrep(擴展grep)和fgrep(快速grep)。現在grep已經整合成一個,選項:-E和-F分別對應egrep和fgrep。另外還有非標准的agrep。
對於壓縮文件,則應使用zgrep, zegrep以及zfgrep,當然對於未壓縮文件的也可以使用。功能上類似於grep。grep在Unix、Linux以及windows上均有,這里 僅對Linux上的grep進行簡單略述。grep常結合正則表達式使用,但這里並不講述正則表達式的內容。
語法:
1、grep [OPTIONS] PATTERN [FILE...]
2、grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
示例:
1、使用grep查看root的登錄信息行
$ who | grep -F root
或
$ who | grep root
2、不顯示以a開頭的行
$ ls -l | grep -v '^a'
3、忽略模式匹配大小寫
$ grep -i ‘abc’ file.txt
grep默認情況下區分大小寫的。
4、將/dev/null作為第二個文件參數使用
$ grep 'abc$' file.txt /dev/null
5、使用文件路徑遞歸查找與模式匹配的文件的文件名
$ grep -ril ‘abc’ /etc/passwd
6、高亮匹配字
$ man grep | grep --color -e --color
常用選項:
-E 使用正則表達式進行匹配。grep -E可取代傳統的egrep。
-F 使用固定字符串進行匹配。grep -F可取代傳統的fgrep命令。
-e PATTERN, --regexp=PATTERN 可指定參數為模式,用於防止以“-”開頭的模式被解釋為命令選項。多模式可使用換行字符分隔。
-f FILE, --file=FILE 從FILE文件讀取模式做匹配。
-i 模式匹配時忽略字母大小寫差異。
-w 只顯示單詞嚴格匹配的行。
-x 只顯示整行嚴格匹配的行。
-s 不顯示錯誤信息。通常與-q並用。
-v 顯示不匹配模式的行。
-b 在輸出的每一行前顯示包含匹配字符串的行在文件中的字節偏移量。
-n 在輸出前加上匹配串所在行的行號(文件首行行號為1)。
-c 只顯示匹配行的數量。
-h 在查找多個文件時,指示grep不要將文件名加入到輸出之前。
-l 列出匹配模式的文件名稱,而不是打印匹配的行。
-q 靜默地。如果模式成功匹配,則grep會成功的離開,而不講匹配的行寫入標准輸出;否則即是不成功。
-r 遞歸搜索目錄
PS:
在最后的100行中查找:tail -n 100 filename | grep XXX
從前往后查找: cat xxx | grep xx
從后往前查找:tac xxx | grep xx