grep是一種強(qiáng)大的文本搜索工具,它能使用特定模式匹配(包括正則表達(dá)式)搜索文本,并默認(rèn)輸出匹配行。Unix的grep家族包括grep、egrep和fgrep。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),鯉城企業(yè)網(wǎng)站建設(shè),鯉城品牌網(wǎng)站建設(shè),網(wǎng)站定制,鯉城網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,鯉城網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
格式用法:grep[選項(xiàng)]…模式[文件]…
在每個(gè)文件或標(biāo)準(zhǔn)輸入中搜索模式。
默認(rèn)情況下,模式是一個(gè)基本的正則表達(dá)式(BRE)。
正則表達(dá)式的選擇和解釋:
-E 模式是一個(gè)擴(kuò)展的正則表達(dá)式
-e 模式使用模式進(jìn)行匹配
-f 從文件中獲取模式
-i 忽略大小寫的區(qū)別
-w 強(qiáng)制模式,只匹配完整的單詞
查看文件,以這個(gè)文件為示例
root@zhaocheng ~]# cat filetest
ROOT:x:98:0:ROOT:/ROOT:/usr/local
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
grep -E 這個(gè)是一個(gè)擴(kuò)展的正則表達(dá)式,支持匹配多元素,可以通過(guò)管道符來(lái)連接
[root@zhaocheng ~]# grep -E 'root|ROOT|sync' filetest
ROOT:x:98:0:ROOT:/ROOT:/usr/local
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
operator:x:11:0:operator:/root:/sbin/nologin
而grep -e這是一個(gè)標(biāo)準(zhǔn)的匹配,一個(gè)e只能匹配一個(gè)元素,不支持管道,如果想匹配多個(gè),后面需要再加-e再去匹配
[root@zhaocheng ~]# grep -e 'root' -e 'sync' filetest
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
operator:x:11:0:operator:/root:/sbin/nologin
而這里還有一個(gè)egrep,這個(gè)相當(dāng)于grep的擴(kuò)充版本,也就是本來(lái)grep -e不支持多元素匹配,不支持管道,而egrep支持管道
可以這么理解egrep(在linux中是grep -E)是擴(kuò)展的grep
[root@zhaocheng ~]# egrep 'root|sync' filetest
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
operator:x:11:0:operator:/root:/sbin/nologin
grep -f 這個(gè)一般是用于排查兩個(gè)文件當(dāng)中有沒(méi)有一樣的,重復(fù)的行,要是有的話,就將重復(fù)的行給輸出出來(lái),這個(gè)/etc/passwd也是一個(gè)文件,前面的filetest也是一個(gè)文件,由于作出對(duì)比我將filetest刪除了一部分,這樣的話效果會(huì)明顯,一般工作中要是對(duì)兩個(gè)文件進(jìn)行排查有沒(méi)有相同的,有相同的行就過(guò)濾出來(lái),可以使用grep -f
格式 grep -f 文件1 文件2
[root@zhaocheng ~]# grep -f filetest /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
grep -i 忽略大小寫進(jìn)行匹配,這個(gè)''也可以不加
[root@zhaocheng ~]# grep -i 'root' filetest
ROOT:x:98:0:ROOT:/ROOT:/usr/local
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
如果忽略大小寫,還想多進(jìn)行匹配的話,可以使用egrep,相當(dāng)于grep -E,這樣支持管道,進(jìn)行多行匹配了
[root@zhaocheng ~]# egrep -i 'root|halt' filetest
ROOT:x:98:0:ROOT:/ROOT:/usr/local
root:x:0:0:root:/root:/bin/bash
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
前面使用的匹配都是匹配的行,而只想去匹配一個(gè)單詞,可以使用-w,
[root@zhaocheng ~]# egrep -w 'halt|sync' filetest
sync:x:5:0:sync:/sbin:/bin/sync
halt:x:7:0:halt:/sbin:/sbin/halt
[root@zhaocheng ~]# egrep -w 'hat|syn' filetest
**其他的一些參數(shù)
-s 無(wú)消息抑制錯(cuò)誤消息
-v 反匹配選擇不匹配的行
-V 顯示版本信息并退出
--help 顯示此幫助文本并退出**
-s 不顯示錯(cuò)誤信息,比如沒(méi)有這個(gè)文件,加-s就不會(huì)輸出錯(cuò)誤內(nèi)容
[root@zhaocheng ~]# grep kkkk /etc/shadows
grep: /etc/shadows: No such file or directory
[root@zhaocheng ~]# grep -s kkkk /etc/shadows
-v輸出除了lp之外的所有的數(shù)據(jù)
[root@zhaocheng ~]# grep -v lp filetest
linuxaweqeeqw
ROOT:x:98:0:ROOT:/ROOT:/usr/local
halt$:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
linuxoooghhrhg
-V輸出grep的版本信息并退出
[root@zhaocheng ~]# grep -V
grep (GNU grep) 2.20
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others, see .