Linux文本處理三架馬車之三grep

grep命令

grep(global search regular expression(RE) and print out the line絮重,全面搜索正則表達(dá)式并把行打印出來)是一種強(qiáng)大的文本搜索工具草穆,它能使用正則表達(dá)式搜索文本枝秤,并把匹配的行打印出來。

選項(xiàng)

-a 不要忽略二進(jìn)制數(shù)據(jù)烦绳。
-A<顯示列數(shù)> 除了顯示符合范本樣式的那一行之外,并顯示該行之后的內(nèi)容。
-b 在顯示符合范本樣式的那一行之外巷嚣,并顯示該行之前的內(nèi)容。
-c 計(jì)算符合范本樣式的列數(shù)钳吟。
-C<顯示列數(shù)>或-<顯示列數(shù)>  除了顯示符合范本樣式的那一列之外廷粒,并顯示該列之前后的內(nèi)容。
-d<進(jìn)行動作> 當(dāng)指定要查找的是目錄而非文件時(shí)红且,必須使用這項(xiàng)參數(shù)坝茎,否則grep命令將回報(bào)信息并停止動作。
-e<范本樣式> 指定字符串作為查找文件內(nèi)容的范本樣式直焙。
-E 將范本樣式為延伸的普通表示法來使用景东,意味著使用能使用擴(kuò)展正則表達(dá)式。
-f<范本文件> 指定范本文件奔誓,其內(nèi)容有一個或多個范本樣式斤吐,讓grep查找符合范本條件的文件內(nèi)容,格式為每一列的范本樣式厨喂。
-F 將范本樣式視為固定字符串的列表和措。
-G 將范本樣式視為普通的表示法來使用。
-h 在顯示符合范本樣式的那一列之前蜕煌,不標(biāo)示該列所屬的文件名稱派阱。
-H 在顯示符合范本樣式的那一列之前,標(biāo)示該列的文件名稱斜纪。
-i 忽略字符大小寫的差別贫母。
-l 列出文件內(nèi)容符合指定的范本樣式的文件名稱。
-L 列出文件內(nèi)容不符合指定的范本樣式的文件名稱盒刚。
-n 在顯示符合范本樣式的那一列之前腺劣,標(biāo)示出該列的編號。
-q 不顯示任何信息因块。
-R/-r 此參數(shù)的效果和指定“-d recurse”參數(shù)相同橘原。
-s 不顯示錯誤信息。
-v 反轉(zhuǎn)查找。
-w 只顯示全字符合的列趾断。
-x 只顯示全列符合的列拒名。
-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 ...

輸出除之外的所有行 -v 選項(xiàng):

grep -v "match_pattern" file_name

標(biāo)記匹配顏色 --color=auto 選項(xiàng):

grep "match_pattern" file_name --color=auto

使用正則表達(dá)式 -E 選項(xiàng):

grep -E "[1-9]+"
或
egrep "[1-9]+"

只輸出文件中匹配到的部分 -o 選項(xiàng):

echo this is a test line. | grep -o -E "[a-z]+\."  ### \.的意思是將點(diǎn)號作為
line.

echo this is a test line. | egrep -o "[a-z]+\."
line.
圖1

統(tǒng)計(jì)文件或者文本中包含匹配字符串的行數(shù) -c 選項(xiàng):

grep -c "text" file_name

輸出包含匹配字符串的行數(shù) -n 選項(xiàng):

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
# 在顯示符合范本樣式的那一行之外,并顯示該行之前的內(nèi)容隔嫡。
#一行中字符串的字符便宜是從該行的第一個字符開始計(jì)算甸怕,起始值為0。選項(xiàng) -b -o 一般總是配合使用腮恩。

搜索多個文件并查找匹配文本在哪些文件中:

grep -l "text" file1 file2 file3...
# 列出文件內(nèi)容符合指定的范本樣式的文件名稱梢杭。

grep遞歸搜索文件

在多級目錄中對文本進(jìn)行遞歸搜索:

grep "text" . -r -n
# .表示當(dāng)前目錄。

忽略匹配樣式中的字符大小寫:

echo "hello world" | grep -i "HELLO"
hello

選項(xiàng) -e 制動多個匹配樣式:

echo this is a text line | grep -e "is" -e "line" -o
is
line

#也可以使用-f選項(xiàng)來匹配多個樣式秸滴,在樣式文件中逐行寫出需要匹配的字符武契。
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

打印出匹配文本之前或者之后的行:

#顯示匹配某個結(jié)果之后的3行,使用 -A 選項(xiàng):
seq 10 | grep "5" -A 3
5
6
7
8

#顯示匹配某個結(jié)果之前的3行荡含,使用 -B 選項(xiàng):
seq 10 | grep "5" -B 3
2
3
4
5

#顯示匹配某個結(jié)果的前三行和后三行咒唆,使用 -C 選項(xiàng):
seq 10 | grep "5" -C 3
2
3
4
5
6
7
8

#如果匹配結(jié)果有多個,會用“--”作為各匹配結(jié)果之間的分隔符:
echo -e "a\nb\nc\na\nb\nc" | grep a -A 1
a
b
--
a
b
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末释液,一起剝皮案震驚了整個濱河市全释,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌误债,老刑警劉巖浸船,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寝蹈,居然都是意外死亡李命,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門箫老,熙熙樓的掌柜王于貴愁眉苦臉地迎上來封字,“玉大人,你說我怎么就攤上這事耍鬓±眩” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵牲蜀,是天一觀的道長仿耽。 經(jīng)常有香客問我,道長各薇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮峭判,結(jié)果婚禮上开缎,老公的妹妹穿的比我還像新娘。我一直安慰自己林螃,他們只是感情好奕删,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疗认,像睡著了一般完残。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上横漏,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天谨设,我揣著相機(jī)與錄音,去河邊找鬼缎浇。 笑死扎拣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的素跺。 我是一名探鬼主播二蓝,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼指厌!你這毒婦竟也來了刊愚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤踩验,失蹤者是張志新(化名)和其女友劉穎鸥诽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晰甚,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衙传,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厕九。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓖捶。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扁远,靈堂內(nèi)的尸體忽然破棺而出俊鱼,到底是詐尸還是另有隱情,我是刑警寧澤畅买,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布并闲,位于F島的核電站,受9級特大地震影響谷羞,放射性物質(zhì)發(fā)生泄漏帝火。R本人自食惡果不足惜溜徙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犀填。 院中可真熱鬧蠢壹,春花似錦、人聲如沸九巡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冕广。三九已至疏日,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撒汉,已是汗流浹背沟优。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留神凑,地道東北人净神。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像溉委,于是被迫代替她去往敵國和親鹃唯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

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