Linux--grep命令

概述

  • grep (global search regular expression(RE) and print out the
    line,全面搜索正則表達(dá)式并把行打印出來)是一種強大的文本搜索工具倘零,它能使用正則表達(dá)式搜索文本遂黍,并把匹配的行打印出來轩勘。用于過濾/搜索的特定字符手蝎【质矗可使用正則表達(dá)式能多種命令配合使用彻桃,使用上十分靈活急但。
  • grep是一個強大的文本搜索澎媒,grep是貪婪的,只要符合的都會查找出來波桩;
  • grep命令格式
grep [option] "string_to_find" filename

grep常見命令

  • grep常見的幾個參數(shù)
1)-i:忽略搜索字符串的大小寫

(2)-v:取反戒努,即輸出不匹配的那些文本行

(3)-n:輸出行號

(4)-l:輸出能夠匹配模式的文件名,相反的選項為-L

(5)-q:靜默輸出

選項是可選的镐躲,根據(jù)實際需求進(jìn)行選擇即可

string_to_find為需要匹配的模式储玫,可以填寫字符串或者正則表達(dá)式

filename為需要查找的文件的名稱
  • grep選項完整版
-a --text # 不要忽略二進(jìn)制數(shù)據(jù)。 
-A <顯示行數(shù)> --after-context=<顯示行數(shù)> # 除了顯示符合范本樣式的那一行之外萤皂,并顯示該行之后的內(nèi)容撒穷。 
-b --byte-offset # 在顯示符合范本樣式的那一行之外,并顯示該行之前的內(nèi)容裆熙。 
-B<顯示行數(shù)> --before-context=<顯示行數(shù)> # 除了顯示符合樣式的那一行之外端礼,并顯示該行之前的內(nèi)容禽笑。 
-c --count # 計算符合范本樣式的列數(shù)。 
-C<顯示行數(shù)> --context=<顯示行數(shù)>或-<顯示行數(shù)> # 除了顯示符合范本樣式的那一列之外蛤奥,并顯示該列之前后的內(nèi)容佳镜。 
-d<進(jìn)行動作> --directories=<動作> # 當(dāng)指定要查找的是目錄而非文件時,必須使用這項參數(shù)凡桥,否則grep命令將回報信息并停止動作蟀伸。 
-e<范本樣式> --regexp=<范本樣式> # 指定字符串作為查找文件內(nèi)容的范本樣式。 
-E --extended-regexp # 將范本樣式為延伸的普通表示法來使用唬血,意味著使用能使用擴(kuò)展正則表達(dá)式望蜡。 
-f<范本文件> --file=<規(guī)則文件> # 指定范本文件,其內(nèi)容有一個或多個范本樣式拷恨,讓grep查找符合范本條件的文件內(nèi)容,格式為每一列的范本樣式谢肾。 
-F --fixed-regexp # 將范本樣式視為固定字符串的列表腕侄。 
-G --basic-regexp # 將范本樣式視為普通的表示法來使用。 
-h --no-filename # 在顯示符合范本樣式的那一列之前芦疏,不標(biāo)示該列所屬的文件名稱冕杠。 
-H --with-filename # 在顯示符合范本樣式的那一列之前,標(biāo)示該列的文件名稱酸茴。 
-i --ignore-case # 忽略字符大小寫的差別分预。 
-l --file-with-matches # 列出文件內(nèi)容符合指定的范本樣式的文件名稱。 
-L --files-without-match # 列出文件內(nèi)容不符合指定的范本樣式的文件名稱薪捍。 
-n --line-number # 在顯示符合范本樣式的那一列之前笼痹,標(biāo)示出該列的編號。 
-q --quiet或--silent # 不顯示任何信息酪穿。 
-R/-r --recursive # 此參數(shù)的效果和指定“-d recurse”參數(shù)相同凳干。 
-s --no-messages # 不顯示錯誤信息。 
-v --revert-match # 反轉(zhuǎn)查找被济。 
-V --version # 顯示版本信息救赐。 
-w --word-regexp # 只顯示全字符合的列。 
-x --line-regexp # 只顯示全列符合的列只磷。 
-y # 此參數(shù)效果跟“-i”相同经磅。 
-o # 只輸出文件中匹配到的部分。

grep常見命令

  • 在文件中搜索一個單詞钮追,命令會返回一個包含 “match_pattern” 的文本行:
grep match_pattern file_name 
grep "match_pattern" file_name 
  • 在多個文件中查找:
grep "match_pattern" file_1 file_2 file_3 ... 
  • 輸出除match_pattern之外的所有行 -v 選項:
grep -v "match_pattern" file_name
  • 標(biāo)記匹配顏色 --color=auto 選項:
grep "match_pattern" file_name --color=auto 
  • 使用正則表達(dá)式 -E 選項:
grep -E "[1-9]+" 
或 
egrep "[1-9]+"
  • 只輸出文件中匹配到的部分 -o 選項:
echo this is a test line. | grep -o -E "[a-z]+\." line. 
echo this is a test line. | egrep -o "[a-z]+\." line. 
  • 統(tǒng)計文件或者文本中包含匹配字符串的行數(shù)-c 選項:
grep -c "text" file_name 
  • 輸出包含匹配字符串的行數(shù) -n 選項:
grep "text" -n file_name 
或 
cat file_name | grep "text" -n 
#多個文件 
grep "text" -n file_1 file_2 
  • 打印樣式匹配所位于的字符或字節(jié)偏移:
echo gun is not unix | grep -b -o "not" 7:not
#一行中字符串的字符偏移是從該行的第一個字符開始計算预厌,起始值為0。選項 **-b -o** 一般總是配合使用畏陕。 
  • 搜索多個文件并查找匹配文本在哪些文件中:
grep -l "text" file1 file2 file3... 
  • grep遞歸搜索文件
在多級目錄中對文本進(jìn)行遞歸搜索:
grep "text" . -r -n        # .表示當(dāng)前目錄配乓。 
  • 忽略匹配樣式中的字符大小寫:
echo "hello world" | grep -i "HELLO" hello 
  • 選項 -e 制動多個匹配樣式:
echo this is a text line | grep -e "is" -e "line" -o is line 
#也可以使用 -f選項來匹配多個樣式,在樣式文件中逐行寫出需要匹配的字符。
 cat patfile aaa bbb echo aaa bbb ccc ddd eee | grep -f patfile -o 
  • 在grep搜索結(jié)果中包括或者排除指定文件:
#只在目錄中所有的.php和.html文件中遞歸搜索字符"main()" 
grep "main()" . -r --include *.{php,html}
#在搜索結(jié)果中排除所有README文件
grep "main()" . -r --exclude "README" 
#在搜索結(jié)果中排除filelist文件列表里的文件
grep "main()" . -r --exclude-from filelist 
  • 使用0值字節(jié)后綴的grep與xargs:
# 測試文件:
echo "aaa" > file1 
echo "bbb" > file2
echo "aaa" > file3 
grep "aaa" file* -lZ | xargs -0 rm 
 #執(zhí)行后會刪除file1和file3犹芹,grep輸出用-Z選項來指定以0值字節(jié)作為終結(jié)符文件名(\0)崎页,xargs -0 讀取輸入并用0值字節(jié)終結(jié)符分隔文件名,然后刪除匹配文件腰埂,-Z通常和-l結(jié)合使用飒焦。 
  • grep靜默輸出:
grep -q "test" filename 
# 不會輸出任何信息,如果命令運行成功返回0屿笼,失敗則返回非0值牺荠。一般用于條件測試。
  • 打印出匹配文本之前或者之后的行:
#顯示匹配某個結(jié)果之后的3行驴一,使用 -A 選項: 
seq 10 | grep "5" -A 3 

參考博客
shell中g(shù)rep的用法
shell中g(shù)rep命令及常用語法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末休雌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肝断,更是在濱河造成了極大的恐慌杈曲,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胸懈,死亡現(xiàn)場離奇詭異担扑,居然都是意外死亡,警方通過查閱死者的電腦和手機趣钱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門涌献,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人首有,你說我怎么就攤上這事燕垃。” “怎么了绞灼?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵利术,是天一觀的道長。 經(jīng)常有香客問我低矮,道長印叁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任军掂,我火速辦了婚禮轮蜕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝗锥。我一直安慰自己跃洛,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布终议。 她就那樣靜靜地躺著汇竭,像睡著了一般葱蝗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上细燎,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天两曼,我揣著相機與錄音,去河邊找鬼玻驻。 笑死悼凑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的璧瞬。 我是一名探鬼主播户辫,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嗤锉!你這毒婦竟也來了渔欢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤档冬,失蹤者是張志新(化名)和其女友劉穎膘茎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酷誓,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年态坦,在試婚紗的時候發(fā)現(xiàn)自己被綠了盐数。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡伞梯,死狀恐怖玫氢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谜诫,我是刑警寧澤漾峡,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站喻旷,受9級特大地震影響生逸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜且预,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一槽袄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锋谐,春花似錦遍尺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迂苛。三九已至,卻和暖如春鼓择,著一層夾襖步出監(jiān)牢的瞬間三幻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工惯退, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赌髓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓催跪,卻偏偏與公主長得像锁蠕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子懊蒸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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

  • linux grep命令 1.作用 Linux系統(tǒng)中g(shù)rep命令是一種強大的文本搜索工具荣倾,它能使用正則表達(dá)式搜索文...
    山的那邊是什么_閱讀 1,822評論 0 3
  • 1.作用 Linux系統(tǒng)中g(shù)rep命令是一種強大的文本搜索工具,它能使用正則表達(dá)式搜索文本骑丸,并把匹 配的行打印出來...
    流川楓丶閱讀 1,382評論 0 9
  • 簡介 grep (global search regular expression(RE) and print o...
    風(fēng)中追風(fēng)_3e95閱讀 776評論 0 2
  • Linux grep (global search regular expression(RE) and prin...
    姜淑均閱讀 2,031評論 1 4
  • 01 簡介 在平時開發(fā)過程中通危,難免會查看生產(chǎn)日志去追蹤問題原因铸豁。在海量日志中去查到我們想要的日志就無法避免使用gr...
    Leon_Geo閱讀 616評論 0 7