grep命令如何在linux中使用?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)馬龍免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
1、grep的語法[] (man grep查看grep的幫助文檔)
grep [options] 'pattern' FILE
命令 選項 模式 文件
grep不加引號直接過濾字符串;grep在進行模式匹配的時候必須加引號,單引和雙引號都可以;grep在引用變量的時候必須加雙引號
2、grep的選項[option]
-r:遞歸的搜索
-v:反向選取,只顯示不符合模式的行
-o:只顯示被模式匹配到的字符串,而不是整個行
-i:匹配時不區(qū)分大小寫
-A #:顯示匹配到的行時,順便顯示后面的#行(#表示數(shù)值)
-B #:前面的#行
-C #:前后的#行
-E:使用擴展的正則表達式
eg:grep選項的例子
代碼如下:
cat > eg1.text << EOF
This is first
how are you
How old are you
fine,thanks
what,so what
What is your name
EOF
grep "you" eg1.text
grep -o "you" eg1.text
grep -v "you" eg1.text
grep -i "what" eg1.text
grep -A 1 "fine" eg1.text
grep -B 1 "fine" eg1.text
grep -C 1 "fine" eg1.text
以上代碼直接粘貼復(fù)制在linux上可直接運行,代碼解釋運行效果,如下
3、 正則表達式(man regex)是指一個用來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串,通常被用來檢索或替換那些符合某個
模式的文本內(nèi)容。正則表達式分為:基本正則表達式和擴展正則表達式。
元字符就是指那些在正則表達式中具有特殊意義的專用字符。
grep支持基本正則表達式的元字符:
^:錨點行首的符合條件的內(nèi)容,用法格式"^pattern"
$:錨點行首的符合條件的內(nèi)容,用法格式"pattern$"
^$:匹配空白行
.:匹配任意單個字符
*:匹配緊挨在前面的字符任意次(0,1,多次)
.*:匹配任意長度的任意字符
\?:匹配緊挨在前面的字符0次或1次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{m,\}:匹配其前面的字符至少m次
\{m\}:精確匹配前面的m次
\{0,n\}:0到n次
\<:錨點詞首----相當(dāng)于\b,用法格式:\<pattern
\>:錨點詞尾,用法格式:\>pattern
\<pattern\>:單詞錨點
\(\):分組,用法格式:\(pattern\),引用第一個小括號的分組\1,第二個是\2,以此類推
[]:匹配指定范圍內(nèi)的任意單個字符
[^]:匹配指定范圍外的任意單個字符
eg:基本正則表達的例子
(1)、顯示/proc/meminfo文件中以不區(qū)分大小的s開頭的行;
grep "^[sS]" /proc/meminfo
(2)、顯示/etc/passwd中以nologin結(jié)尾的行;
grep "nologin$" /etc/passwd
(3)、顯示/etc/inittab中空格開頭的行;
grep "^$" /etc/inittab
(4)、顯示/etc/passwd中,以r開頭的字符而后跟了任意單個字符的行;
grep --color "^r." /etc/passwd
(5)、顯示/etc/passwd中,以r開頭后跟了o,o出現(xiàn)任意次的行;
grep --color "^ro*" /etc/passwd
(6)、顯示/etc/passwd文件中,r后跟了任意長度任意字符后跟了h的行;
grep --color "r.*h" /etc/passwd
(7)、顯示/etc/passwd中,r后跟了o,o出現(xiàn)0次或者1次的行;
grep --color "ro\?" /etc/passwd
(8)、顯示/etc/passwd中,r后跟了o,o出現(xiàn)至少1次至多2次的行;
grep --color "ro\{1,2\}" /etc/passwd
(9)、顯示/etc/passwd中,r后跟了o,o只出現(xiàn)2次的行;
grep --color "ro\{2\}" /etc/passwd
(10)、顯示/etc/passwd中,匹配root這個單詞的行;
grep --color "\<root\>" /etc/passwd
grep支持擴展表達式的元字符:支持所有基本正則表達式的元字符,有些和基本元字符在用法上不一樣,擴展正則表達式的命令egrep或者grep -E
?:匹配緊挨在前面的字符0次或1次
{m,n}:至少m次,至多n次
():分組
+:至少匹配前面的字符一次
a|b:匹配a或者b
eg:擴展正則表達式的例子
(1)、顯示/etc/passwd中,r開頭后跟了o,o出現(xiàn)0次或者1次的行;
egrep --color "ro?" /etc/passwd
(2)、顯示/etc/passwd中,r開頭后跟了o,o出現(xiàn)至少1次至多2次的行;
egrep --color "ro{1,2}" /etc/passwd
(3)、顯示/etc/inittab文件中以一個數(shù)字開頭并以一個與開頭數(shù)字相同的數(shù)字結(jié)尾的;
egrep --color "^([0-9]).*\1$" /etc/inittab

(4)、顯示/etc/passwd中,r開頭后跟了o,o出現(xiàn)至少1次;
代碼如下:
egrep --color "ro+" /etc/passwd
grep -E --color "ro{1,}" /etc/passwd
(5)、顯示/etc/passwd中,匹配root或者halt的行;
egrep --color "root|halt" /etc/passwd
(6)、顯示/var/log/secure文件中包含"LOGIN ON"或者"Failed passwd"的行;
egrep --color "(LOGIN ON|Failed passwd)" /var/log/secure
grep支持字符和字符集合
\d:數(shù)字字符匹配。等效于 [0-9]。
\s:匹配任何空白字符,包括空格、制表符、換頁符等。與 [ \f\n\r\t\v] 等效。
\S:匹配任何非空白字符。與 [^ \f\n\r\t\v] 等效
\w:匹配任何字類字符,包括下劃線。與“[A-Za-z0-9_]”等效。
\W:與任何非單詞字符匹配。與“[^A-Za-z0-9_]”等效。
[:digit:]:所有數(shù)字, 相當(dāng)于0-9 或者\d
[:lower:]:所有的小寫字母
[:upper:]:所有的大寫字母
[:alpha:]:所有的字母
[:alnum:]:相當(dāng)于[0-9a-zA-Z]
[:space:]:空白字符 相當(dāng)于\s
[:punct:]:所有標點符號
eg:支持字符集合的例子
(1)、顯示/etc/rc.d/rc.sysinit中以#開頭,且后面跟一個或多個空白字符,而后又跟了任意非空白字符的行;
代碼如下:
grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/rc.d/rc.sysinit
grep -E "^#\s{1,}\S" /etc/rc.d/rc.sysinit
(2)、顯示/etc/inittab中包含了:一個數(shù)字:(即兩個冒號中間一個數(shù)字)的行;
代碼如下:
grep --color ":[[:digit:]]:" /etc/inittab
grep --color ":\d:" /etc/inittab
經(jīng)典的例子
(1)、分組的例子
代碼如下:
cat > test.txt <<EOF
He like his liker
He love his lover
She love her lover
She like her lover
EOF
grep "l..e.*l..er" test.txt
grep "\(l..e\).*\1r" test.txt


(2)、匹配1-255的數(shù)字
代碼如下:
cat > num.txt << EOF
12
234
255
256
EOF
grep --color -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>" num.txt

(3)、匹配ABC類IP地址即 1.0.0.1---223.255.255.254
代碼如下:
cat > ip.txt <<EOF
1.0.0.254
1.0.0.255
1.2.3.4
223.255.255.254
224.255.255.252
2.255.255.255
EOF
grep -E --color "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>" ip.txt

(4)、匹配Email地址:任意長度數(shù)字字母@任意長度數(shù)字字母.(com|org|net等等)
代碼如下:
cat > email.txt << EOF
5678967@qq.com
jie231@sina.cn
ken_tom@netcom.org
jerry#li@baidu.net
li@souhu.net
EOF
grep -E --color "^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" email.txt

(5)、匹配手機號碼:手機號碼是1[3|4|5|8]后面接9位數(shù)字的
代碼如下:
cat > tel.txt << EOF
13690876890
12589098379
15608764083
15820974619
138074082711
18618203761
19209783900
1329873909
EOF
grep --color -E "\<1[3|4|5|8][0-9]{9}\>" tel.txt

看完上述內(nèi)容,你們掌握grep命令如何在linux中使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
分享名稱:grep命令如何在linux中使用
瀏覽路徑:http://www.chinadenli.net/article34/iphese.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、微信公眾號、企業(yè)建站、營銷型網(wǎng)站建設(shè)、軟件開發(fā)、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)