grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行打印出來html
grep搜索成功,則返回0,若是搜索不成功,則返回1,若是搜索的文件不存在,則返回2。正則表達式
^ #錨定行的開始 如:'^grep'匹配全部以grep開頭的行。 $ #錨定行的結束 如:'grep$'匹配全部以grep結尾的行。 . #匹配一個非換行符的字符 如:'gr.p'匹配gr後接一個任意字符,而後是p。
* #匹配零個或多個先前字符 如:'*grep'匹配全部一個或多個空格後緊跟grep的行。 .* #一塊兒用表明任意字符。 [] #匹配一個指定範圍內的字符,如'[Gg]rep'匹配Grep和grep。 [^] #匹配一個不在指定範圍內的字符 \(..\) #標記匹配字符,如'\(love\)',love被標記爲1。 \< #錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。 \> #錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。 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 #匹配文字和數字字符,也就是[A-Za-z0-9], \W #\w的反置形式,匹配一個或多個非單詞字符,如點號句號等。 \b #單詞鎖定符,如: '\bgrep\b'只匹配grep。
-n 打印行號 grep -n ".*" h.txt 全部打印行號 grep -n "root" h.txt 匹配的內容顯示行號 -v 不包括 -E 表示過濾 多個參數 grep -Ev "sshd|network|crond|sysstat|" -o:僅打印你須要的東西,默認打印正行 grep -o "hello" h.txt -i:忽略大小寫 grep -i "hello" h.txt -c: 用於統計文中出現的次數 --color=auto 過濾字段添加顏色 利用正則打印特定字符 \b:做爲邊界符,邊界只包含特定字符的行 grep "\boldboy\b" /etc/passwd -->只過濾包含oldboy的行
egrep: == grep -E 用於顯示文件中符合條件的字符 env|egrep "USER|MAIL|PWD|LOGNAME" 用的表達式不同 ,egerp更加規範 egrep -o "oldboy|hello" h.txt -->僅僅輸出 oldboy 和 hello
查找指定關鍵字個數shell
grep '\bboot\b' logs_bak.txt 【\b單詞鎖定符,只匹配boot】
輸出logs_bak.txt 文件中含有從logs.txt文件中讀取出的關鍵詞的內容行ssh
cat logs_bak.txt cat logs.txt cat logs.txt | grep -nf logs_bak.txt
從多個文件中查找關鍵詞工具
grep "omc" /etc/passwd /etc/shadow 【多文件查詢時,會用冒號前添加文件名】
打印IP信息htm
ifconfig eth0|grep -E "([0-9]{1,3}\.){3}" 【-E 表達式匹配,用小括號括起來表示一個總體】
同時過濾多個關鍵字blog
cat /etc/passwd|grep -E "boy|omc" ==> cat /etc/passwd|egrep "omc|boy" 【用 | 劃分多個關鍵字】
顯示當前目錄下面以.txt 結尾的文件中的全部包含每一個字符串至少有7個連續小寫字符的字符串的行ip
grep '\w\{7\}' *.txt ==> grep '[a-z]\{7\}' *.txt 【注意特殊字符的轉義】
上下文的控制(瞭解) 字符串
# A 查詢匹配內容的一行以外,後n行的顯示 # B 查詢匹配內容的一行以外,前n行的顯示 # C 查詢匹配內容的一行以外,顯示上下n行 grep -n 'yum' -A 3 logs_bak.txt