grep

1.搜索有the的行,并輸出行號

#grep -n 'the' regular_express.txt

搜索沒有the的行,并輸出行號

#grep -nv 'the' regular_express.txt

2.利用[]搜索集合字符

[] 表示其中的某一個字符 只壳,例如[ade] 表示a或d或e

# grep -n 't[ae]st' regular_express.txt

8:I can't finish the test.

9:Oh! the soup taste good!

可以用^符號做[]內(nèi)的前綴映皆,表示除[]內(nèi)的字符之外的字 符。

比如搜索oo前沒有g(shù)的字符串所在的行. 使用 '[^g]oo' 作搜索字符串

# grep -n '[^g]oo' regular_express.txt

2:apple is my favorite food.

3:Football game is not use feet only.

18:google is the best tools for search keyword.

19:goooooogle yes!

[] 內(nèi)可以用范圍表示,比如[a-z] 表示小寫字母,[0-9] 表示0~9的數(shù)字, [A-Z] 則是大寫字母們劣纲。[a-zA-Z0-9]

表示所有數(shù)字與英文字符。 當(dāng)然也可以配合^來排除字符氮采。

搜索包含數(shù)字的行

# grep -n '[0-9]' regular_express.txt

5:However ,this dress is about # 3183 dollars.

15:You are the best is menu you are the no.1.

行首與行尾字符 ^ #. ^ 表示行的開頭体捏,#表示行的結(jié)尾( 不是字符,是位置)那么‘^#' 就表示空行,因?yàn)?/p>

只有行首和行尾梗摇。

這里^與[]里面使用的^意義不同拓哟。它表示^后面的串是在行的開頭。

比如搜索the在開頭的行

# grep -n '^the' regular_express.txt

12:the symbol '*' is represented as star.

搜索以小寫字母開頭的行

# grep -n '^[a-z]' regular_express.txt

2:apple is my favorite food.

4:this dress doesn't fit me.

10:motorcycle is cheap than car.

12:the symbol '*' is represented as star.

18:google is the best tools for search keyword.

19:goooooogle yes!

20:go! go! Let's go.

#

搜索開頭不是英文字母的行

# grep -n '^[^a-zA-Z]' regular_express.txt

1:"Open Source" is a good mechanism to develop programs.

21:#I am VBird

#

#表示它前面的串是在行的結(jié)尾伶授,比如 '\.' 表示 . 在一行的結(jié)尾

搜索末尾是.的行

# grep -n '\.#' regular_express.txt //. 是正則表達(dá)式的特殊符號断序,所以要用

\轉(zhuǎn)義

1:"Open Source" is a good mechanism to develop programs.

2:apple is my favorite food.

3:Football game is not use feet only.

4:this dress doesn't fit me.

5:However ,this dress is about # 3183 dollars.

6:GNU is free air not free beer.

.....

注意在MS的系統(tǒng)下生成的文本文件,換行會加上一個 ^M 字符糜烹。所以最后的字符會是隱藏的^M ,在處理

Windows下面的文本時要特別注意违诗!

可以用cat dos_file | tr -d '\r' > unix_file 來刪除^M符號。 ^M==\r

那么'^#' 就表示只有行首行尾的空行拉景图!

搜索空行

# grep -n '^#' regular_express.txt

22:

23:

#

搜索非空行

# grep -vn '^#' regular_express.txt

1:"Open Source" is a good mechanism to develop programs.

2:apple is my favorite food.

3:Football game is not use feet only.

4:this dress doesn't fit me.

..........

任意一個字符. 與重復(fù)字符 *

在bash中*代表通配符较雕,用來代表任意個 字符,但是在正則表達(dá)式中,他含義不同亮蒋,*表示有0個或多

個某個字符扣典。

例如 oo*, 表示第一個o一定存在,第二個o可以有一個或多個慎玖,也可以沒有贮尖,因此代表至少一個o.

點(diǎn). 代表一個任意字符,必須存在趁怔。 g??d 可以用 'g..d' 表示湿硝。 good ,gxxd ,gabd .....都符合。

# grep -n 'g..d' regular_express.txt

1:"Open Source" is a good mechanism to develop programs.

9:Oh! the soup taste good!

16:The world is the same with 'glad'.

#

搜索兩個o以上的字符串

# grep -n 'ooo*' regular_express.txt //前兩個o一定存在润努,第三個o可沒有关斜,也可有多個。

1:"Open Source" is a good mechanism to develop programs.

2:apple is my favorite food.

3:Football game is not use feet only.

9:Oh! the soup taste good!

18:google is the best tools for search keyword.

19:goooooogle yes!

搜索g開頭和結(jié)尾铺浇,中間是至少一個o的字符串痢畜,即gog, goog....gooog...等

# grep -n 'goo*g' regular_express.txt

18:google is the best tools for search keyword.

19:goooooogle yes!

搜索g開頭和結(jié)尾的字符串在的行

# grep -n 'g.*g' regular_express.txt // .*表示 0個或多個任意字符

1:"Open Source" is a good mechanism to develop programs.

14:The gd software is a library for drafting programs.

18:google is the best tools for search keyword.

19:goooooogle yes!

20:go! go! Let's go.

限定連續(xù)重復(fù)字符的范圍 { }

. * 只能限制0個或多個, 如果要確切的限制字符重復(fù)數(shù)量鳍侣,就用{范圍} 丁稀。范圍是數(shù)字用,隔開 2,5 表示

2~5個, 2表示2個,2, 表示2到更多個

注意倚聚,由于{ }在SHELL中有特殊意義线衫,因此作為正則表達(dá)式用的時候要用\轉(zhuǎn)義一下。

搜索包含兩個o的字符串的行惑折。

# grep -n 'o\{2\}' regular_express.txt

1:"Open Source" is a good mechanism to develop programs.

2:apple is my favorite food.

3:Football game is not use feet only.

9:Oh! the soup taste good!

18:google is the best tools for search keyword.

19:goooooogle yes!

搜索g后面跟2~5個o,后面再跟一個g的字符串的行授账。

# grep -n 'go\{2,5\}g' regular_express.txt

18:google is the best tools for search keyword.

搜索包含g后面跟2個以上o,后面再跟g的行。唬复。

# grep -n 'go\{2,\}g' regular_express.txt

18:google is the best tools for search keyword.

19:goooooogle yes!

注意矗积,相讓[]中的^ - 不表現(xiàn)特殊意義,可以放在[]里面內(nèi)容的后面敞咧。

'[^a-z\.!^ -]' 表示沒有小寫字母棘捣,沒有. 沒有!, 沒有空格,沒有- 的 串休建,注意[]里面有個小空格乍恐。

另外shell 里面的反向選擇為[!range], 正則里面是 [^range]

2擴(kuò)展正則表達(dá)式

擴(kuò)展正則表達(dá)式是對基礎(chǔ)正則表達(dá)式添加了幾個特殊構(gòu)成的。

它令某些操作更加方便测砂。

比如我們要去除 空白行和行首為 #的行茵烈, 會這樣用:

# grep -v '^#' regular_express.txt | grep -v '^#'

"Open Source" is a good mechanism to develop programs.

apple is my favorite food.

Football game is not use feet only.

this dress doesn't fit me.

............

然而使用支持?jǐn)U展正則表達(dá)式的 egrep 與擴(kuò)展特殊符號 | ,會方便許多砌些。

注意grep只支持基礎(chǔ)表達(dá)式呜投, 而egrep 支持?jǐn)U展的加匈, 其實(shí) egrep 是 grep -E 的別名而已。因此grep -

E 支持?jǐn)U展正則仑荐。

那么:

# egrep -v '^#|^#' regular_express.txt

"Open Source" is a good mechanism to develop programs.

apple is my favorite food.

Football game is not use feet only.

this dress doesn't fit me.

....................

這里| 表示或的關(guān)系雕拼。 即滿足 ^# 或者 ^# 的字符串。

這里列出幾個擴(kuò)展特殊符號:

+粘招, 于 . * 作用類似啥寇,表示 一個或多個重復(fù)字符。

?洒扎, 于 . * 作用類似辑甜,表示0個或一個字符。

|袍冷,表示或關(guān)系磷醋,比如 'gd|good|dog' 表示有g(shù)d,good或dog的串

(),將部分內(nèi)容合成一個單元組难裆。 比如 要搜索 glad 或 good 可以這樣 'g(la|oo)d'

()的好處是可以對小組使用 + ? * 等子檀。

比如要搜索A和C開頭結(jié)尾镊掖,中間有至少一個(xyz) 的串乃戈,可以這樣 : 'A(xyz)+C'

詳細(xì)出處參考:http://www.jb51.net/article/31207.htm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市亩进,隨后出現(xiàn)的幾起案子症虑,更是在濱河造成了極大的恐慌,老刑警劉巖归薛,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谍憔,死亡現(xiàn)場離奇詭異,居然都是意外死亡主籍,警方通過查閱死者的電腦和手機(jī)习贫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來千元,“玉大人苫昌,你說我怎么就攤上這事⌒液#” “怎么了祟身?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長物独。 經(jīng)常有香客問我袜硫,道長,這世上最難降的妖魔是什么挡篓? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任婉陷,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秽澳。我一直安慰自己世杀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布肝集。 她就那樣靜靜地躺著瞻坝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪杏瞻。 梳的紋絲不亂的頭發(fā)上所刀,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音捞挥,去河邊找鬼浮创。 笑死,一個胖子當(dāng)著我的面吹牛砌函,可吹牛的內(nèi)容都是我干的斩披。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讹俊,長吁一口氣:“原來是場噩夢啊……” “哼垦沉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仍劈,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤厕倍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贩疙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讹弯,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年这溅,在試婚紗的時候發(fā)現(xiàn)自己被綠了组民。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡悲靴,死狀恐怖臭胜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情对竣,我是刑警寧澤庇楞,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站否纬,受9級特大地震影響吕晌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜临燃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一睛驳、第九天 我趴在偏房一處隱蔽的房頂上張望烙心。 院中可真熱鬧,春花似錦乏沸、人聲如沸淫茵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匙瘪。三九已至,卻和暖如春蝶缀,著一層夾襖步出監(jiān)牢的瞬間丹喻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工翁都, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碍论,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓柄慰,卻偏偏與公主長得像鳍悠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坐搔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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