grep命令應(yīng)用實(shí)例

轉(zhuǎn):https://blog.csdn.net/hello_hwc/article/details/40017833

Grep
全稱Global Regular Expression Print,表示全局正則表達(dá)式
是一個(gè)強(qiáng)大的文本搜索工具,采用正則匹配
1剿牺、命令格式
grep [options] files

2、主要參數(shù)
-c: 只輸出匹配行的數(shù)目
-i: 不區(qū)分大小寫
-n:顯示匹配航以及行號(hào)
-l:查詢多文件的時(shí)候只輸出包含匹配字符的文件名
-v:反向匹配蚕愤,即顯示不匹配的行
-h: 查詢的時(shí)候不適用文件名
-s:不顯示錯(cuò)誤信息

3凡橱、部分正則表達(dá)式
\ 反義字符:如""""表示匹配""
^$ 開始和結(jié)束
[] 單個(gè)字符慰枕,[A]
[ - ] 匹配一個(gè)范圍呛踊,[0-9a-zA-Z]匹配所有數(shù)字和字母

  • 前面的字符出現(xiàn)0次或者多次
  • 前面的字符出現(xiàn)了一次或者多次
    . 任意字符

4砾淌、經(jīng)典場景

除非要精確區(qū)分大小寫,否則請加上-i來忽略大小寫

(1)結(jié)合find命令和管道
你的一個(gè)音樂文件夾里有多種格式的文件谭网,而你只想找到藝術(shù)家jay的mp3文件汪厨,并且不含有任何的混合音軌

[root@localhost ~]#find . -name ".mp3" | grep -i jay | grep -vi "remix"

分析:
1)使用find -name 來列出所有mp3文件,重定向給grep

  1. 使用grep -i 來查找包含jay的行
    3)使用grep -vi 來查找不包含remix的行

(2)-A -B -C
很多時(shí)候愉择,我們并關(guān)心匹配行而是關(guān)心匹配行的上下文劫乱。這時(shí)候-A -B -C就有用了
-A n 后n行织中,A記憶為(After)
-B n 前n行,B記憶為(Before)
-C n 前n行衷戈,后n行狭吼,C記憶為(Center)
舉例

[root@localhost ~]# ifconfig | grep -A 2 "Link encap"
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F3:38:15  
          inet addr:192.168.91.129  Bcast:192.168.91.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef3:3815/64 Scope:Link
--
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
 
 
[root@localhost ~]#  ifconfig | grep -C 2 "lo"
          Interrupt:67 Base address:0x2024 
 
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host

(3) 用-c來統(tǒng)計(jì)數(shù)目
你手頭有一個(gè)很大的文件,這個(gè)文件包含網(wǎng)址殖妇,比如www.baidu.com tieba.baidu.com等等刁笙。你想要知道有多少個(gè)隸屬于百度的網(wǎng)址

[root@localhost ~]# grep -c "*baidu.com*" filename
例子
[root@localhost ~]# cat file.txt
wtmp begins Mon Feb 24 14:26:08 2014
192.168.0.1
162.12.0.123
"123"
123""123
njuhwc@163.com
njuhwc@gmil.com 123
www.baidu.com
tieba.baidu.com
www.google.com
www.baidu.com/search/index
[root@localhost ~]# grep -cn ".*baidu.com.*" file.txt 
3

(4) -r 遞歸查找子目錄
查找當(dāng)前目錄極其子目錄下面包含匹配字符的文件
查找子目錄,匹配后輸出行號(hào)拉一,這里的點(diǎn)表示當(dāng)前目錄

[root@localhost ~]# grep -nr HELLO_HWC_CSND_BLOG* .

例子:

[root@localhost ~]# grep -nr baidu .
./file.txt:8:www.baidu.com
./file.txt:9:tieba.baidu.com
./file.txt:11:www.baidu.com/search/index
./test/test.txt:1:http://www.baidu.com

查找子目錄采盒,匹配后只輸出文件名

[root@localhost ~]# grep -lr HELLO_HWC_CSND_BLOG* .

例子:

[root@localhost ~]# grep -lr baidu .
./file.txt
./test/test.txt

(5)--line-buffered 打開buffering 模式
你有一個(gè)文件是動(dòng)態(tài)的旧乞,它不斷地添加信息到文件的尾部蔚润,而你想要輸出包含某些信息的行。即持續(xù)的grep一個(gè)動(dòng)態(tài)的流

[root@localhost ~]#tail -f file | grep --line-buffered your_pattern 

(6)結(jié)合ps查找進(jìn)程

[root@localhost ~]# ps aux | grep init
root         1  0.0  0.1   2072   632 ?        Ss   22:52   0:01 init [5]                             
root      4210  0.0  0.1   6508   620 ?        Ss   23:01   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients"
root      4233  0.0  0.0   2780   504 ?        S    23:01   0:00 /usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients
root      4956  0.0  0.1   3920   680 pts/1    R+   23:27   0:00 grep init

這里我們看到了grep init我們執(zhí)行的命令也被列出來了
如果不想要這一行尺栖,我們可以這么改命令

[root@localhost ~]# ps aux | grep [i]nit
root         1  0.0  0.1   2072   632 ?        Ss   22:52   0:01 init [5]                             
root      4210  0.0  0.1   6508   620 ?        Ss   23:01   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients"
root      4233  0.0  0.0   2780   504 ?        S    23:01   0:00 /usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients

(7)查找不包含某一個(gè)目錄

[root@localhost ~]#grep -R --exclude-dir=node_modules 'some pattern' /path/to/search

例子

[root@localhost ~]# ls
anaconda-ks.cfg  Desktop  file.txt  find.result  install.log  install.log.syslog  test
[root@localhost ~]# grep -r baidu .
./file.txt:www.baidu.com
./file.txt:tieba.baidu.com
./file.txt:www.baidu.com/search/index
./test/test.txt:http://www.baidu.com

這時(shí)候如果我們不想包含test目錄

[root@localhost ~]# grep -R --exclude-dir=text "baidu" .
./file.txt:www.baidu.com
./file.txt:tieba.baidu.com
./file.txt:www.baidu.com/search/index

如果報(bào)錯(cuò)

grep: unrecognized option `--exclude-dir=test'

說明版本過老嫡纠,更新下就ok

(8)查找IP地址
這里用到了-o和-P命令
我們通過man grep查看
-o, --only-matching:
Show only the part of a matching line that matches PATTERN.
-P, --perl-regexp:
Interpret PATTERN as a Perl regular expression.
也就是說-o,只顯示匹配行中匹配正則表達(dá)式的那部分
-P延赌,作為Perl正則匹配

[root@localhost ~]# cat file.txt
wtmp begins Mon Feb 24 14:26:08 2014
192.168.0.1
162.12.0.123
"123"
123""123
njuhwc@163.com
njuhwc@gmil.com 123
www.baidu.com
tieba.baidu.com
www.google.com
www.baidu.com/search/index
[root@localhost ~]# grep -oP "([0-9]{1,3}\.){3}[0-9]{1,3}" file.txt
192.168.0.1
162.12.0.123

(9)查找郵箱

[root@localhost ~]# grep -oP "[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+" file.txt

例子

[root@localhost ~]# cat file.txt
wtmp begins Mon Feb 24 14:26:08 2014
192.168.0.1
162.12.0.123
"123"
123""123
njuhwc@163.com
njuhwc@gmil.com 123
www.baidu.com
tieba.baidu.com
www.google.com
www.baidu.com/search/index
[root@localhost ~]# grep -oP "[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+" file.txt
njuhwc@163.com
njuhwc@gmil.com
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末除盏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挫以,更是在濱河造成了極大的恐慌者蠕,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掐松,死亡現(xiàn)場離奇詭異踱侣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)大磺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門抡句,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杠愧,你說我怎么就攤上這事待榔。” “怎么了流济?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵锐锣,是天一觀的道長。 經(jīng)常有香客問我绳瘟,道長雕憔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任稽荧,我火速辦了婚禮橘茉,結(jié)果婚禮上工腋,老公的妹妹穿的比我還像新娘。我一直安慰自己畅卓,他們只是感情好擅腰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著翁潘,像睡著了一般趁冈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拜马,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天渗勘,我揣著相機(jī)與錄音,去河邊找鬼俩莽。 笑死旺坠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扮超。 我是一名探鬼主播取刃,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼出刷!你這毒婦竟也來了璧疗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤馁龟,失蹤者是張志新(化名)和其女友劉穎崩侠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坷檩,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡却音,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淌喻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僧家。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖裸删,靈堂內(nèi)的尸體忽然破棺而出八拱,到底是詐尸還是另有隱情,我是刑警寧澤涯塔,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布肌稻,位于F島的核電站,受9級(jí)特大地震影響匕荸,放射性物質(zhì)發(fā)生泄漏爹谭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一榛搔、第九天 我趴在偏房一處隱蔽的房頂上張望诺凡。 院中可真熱鬧东揣,春花似錦、人聲如沸腹泌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凉袱。三九已至芥吟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間专甩,已是汗流浹背钟鸵。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涤躲,地道東北人棺耍。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像篓叶,于是被迫代替她去往敵國和親烈掠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羞秤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,082評(píng)論 3 53
  • 項(xiàng)目上線之后缸托,或者在測試環(huán)境,經(jīng)常會(huì)有bug讓我們?nèi)ヅ挪楹托薷鸟埃@個(gè)時(shí)候俐镐,我們需要在linux系統(tǒng)中使用一些命令幫...
    時(shí)之令閱讀 2,836評(píng)論 0 2
  • 正則表達(dá)式 關(guān)于正則表達(dá)式相信很多學(xué)計(jì)算機(jī)的人都聽說過 尤其是做編程行業(yè)的人 那什么是正則表達(dá)式 正則表達(dá)式,又稱...
    數(shù)據(jù)革命閱讀 903評(píng)論 0 1
  • 愛情有時(shí)候并不完全如我們想象的那般哺哼,在某個(gè)世界他可能有不一樣的光彩佩抹。 我叫夕瑤,今年24歲取董,本命年棍苹,我總覺得做好多...
    故事小姐閱讀 437評(píng)論 0 1
  • 把破舊揉碎,做成幸福之衣 讓荒涼繼續(xù)荒蕪茵汰,長出春水 天亮前我與一棵荊棘抱頭痛哭 孤獨(dú)的人枢里,你為何站在橋上 黃昏搶走...
    關(guān)長天閱讀 530評(píng)論 25 54