Centos下grep命令簡介
阿新 • • 發佈:2019-02-20
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。 |