1. 程式人生 > >Centos下grep命令簡介

Centos下grep命令簡介

grep命令簡介

grep 是一個最初用於Unix作業系統的命令列工具。在給出檔案列表或標準輸入後,grep會對匹配一個或多個正則表示式的文字進行搜尋,並只輸出匹配(或者不匹配)的行或文字。

grep 可根據提供的匹配模式列表,查詢檔案中的匹配行.發現匹配行後,行內容會被標準輸出(默 認),如果使用了其它引數,可以產生其它格式的輸出

grep 用於匹配文字,它對輸入行的長度沒有限制,除非受限於可用記憶體大小,並且可以匹配行內任意字元。

使用方法

grep -[acinv] '搜尋內容串' filename
常用引數選項
-c 計算找到的符合行的次數。
-i 忽略大小寫。
-n 顯示匹配行及行號。
-v 找到沒有搜尋字串的行。
-h 查詢多檔案時不顯示檔名。
-l 查詢多檔案時只輸出包含匹配字元的檔名。
-s 不顯示不存在或無匹配文字的錯誤資訊。

實際使用舉例

1、搜尋日誌,查詢有多少條503錯誤

grep -c '503' /var/log/httpd/error_log-20141116

2、搜尋含有 error 字樣的行,並且輸出行號

grep -n 'error' /var/log/httpd/error_log-20141116

3、搜尋沒有 error 字樣的行,並且輸出行號

grep -nv 'error' /var/log/httpd/error_log-20141116

4、搜尋尋找安裝的軟體版本有幾個

#centos下檢視安裝的Python版本
rpm -qa | grep -i python
#Ubuntu下檢視安裝的Python版本
sudo dpkg -l | grep -i python

5、過濾配置檔案的註釋符號#

#匹配 # 符號的行,但是輸出的是 # 符號以外的行
grep -v '#' /etc/httpd/conf/httpd.conf

6、查詢每個網絡卡和IP地址

ifconfig | grep -n inet

 7、忽略大小寫搜尋(-i)

grep -i "ErroR" log.txt

8、所有子目錄下的搜尋(-r)

 grep -r "exception" log.txt

 9、精準全匹配搜尋(-w)

grep -w "boo" /path/to/file

 10、精準全字匹配搜尋兩個不同單詞

grep -w 'word1|word2' /path/to/file

 11、統計字串出現的次數(-c)

grep -c 'word' /path/to/file
#-n的話, 會在結果中,列出匹配字串的序列號,並且會列出內容
grep -n 'word' /path/to/file

 12、只列出檔名(-l)

grep -l 'main' *.pls

 13、高亮顯示搜尋結果(–color)

grep --color apache /etc/passwd

grep正則表示式元字符集整理

grep適用的正則表示式
^ 錨定行的開始 如:’^grep’匹配所有以grep開頭的行。
$ 錨定行的結束 如:’grep$’匹配所有以grep結尾的行。
. 匹配一個非換行符的字元 如:’gr.p’匹配gr後接一個任意字元,然後是p。
* 匹配零個或多個先前字元 如:’*grep’匹配所有一個或多個空格後緊跟grep的行。
[] 匹配一個指定範圍內的字元,如'[Gg]rep’匹配Grep和grep。
[^] 匹配一個不在指定範圍內的字元,如:'[^A-FH-Z]rep’匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。
.* 一起用代表任意字元。
\(..\) 標記匹配字元,如’\(love\)’,love被標記為1。
\<word 以某單詞開頭
word\> 以某單詞結尾
x/{m/} 重複字元x,m次,如:’0\{5\}’匹配包含5個o的行。
x\{m,\} 重複字元x,至少m次,如:’o\{5,\}’匹配至少有5個o的行。
x\{m,n\} 重複字元x,至少m次,不多於n次,如:’o\{5,10\}’匹配5–10個o的行。
\w 匹配文字和數字字元
\b 單詞鎖定符,如: ‘\bgrep\b’只匹配grep。