正則表達(dá)式

這部分內(nèi)容可以說是學(xué)習(xí)shell腳本之前必學(xué)的內(nèi)容。如果你這部分內(nèi)容學(xué)的越好倒淫,那么你的shell腳本編寫能力就會(huì)越強(qiáng)伙菊。所以不要嫌這部分內(nèi)容啰嗦,也不要怕麻煩,要用心學(xué)習(xí)镜硕。一定要多加練習(xí)运翼,練習(xí)多了就能熟練掌握了。
在計(jì)算機(jī)科學(xué)中兴枯,正則表達(dá)式是這樣解釋的:它是指一個(gè)用來描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串的單個(gè)字符串血淌。在很多文本編輯器或其他工具里,正則表達(dá)式通常被用來檢索和/或替換那些符合某個(gè)模式的文本內(nèi)容念恍。許多程序設(shè)計(jì)語言都支持利用正則表達(dá)式進(jìn)行字符串操作六剥。對于系統(tǒng)管理員來講,正則表達(dá)式貫穿在我們的日常運(yùn)維工作中峰伙,無論是查找某個(gè)文檔疗疟,抑或查詢某個(gè)日志文件分析其內(nèi)容,都會(huì)用到正則表達(dá)式瞳氓。
其實(shí)正則表達(dá)式策彤,只是一種思想,一種表示方法匣摘。只要我們使用的工具支持表示這種思想那么這個(gè)工具就可以處理正則表達(dá)式的字符串店诗。常用的工具有g(shù)rep, sed, awk 等,下面筆者就介紹一下這三種工具的使用方法音榜。
【grep / egrep】
語法: grep [-cinvABC] ‘word’ filename
-c :打印符合要求的行數(shù)

QQ截圖20171023081542.png

-i :忽略大小寫
-n :在輸出符合要求的行的同時(shí)連同行號一起輸出
-v :打印不符合要求的行
-A :后跟一個(gè)數(shù)字(有無空格都可以)庞瘸,例如 –A2則表示打印符合要求的行以及下面兩行
-B :后跟一個(gè)數(shù)字,例如 –B2 則表示打印符合要求的行以及上面兩行
-C :后跟一個(gè)數(shù)字赠叼,例如 –C2 則表示打印符合要求的行以及上下各兩行
舉幾個(gè)小例子幫助你好好掌握這個(gè)grep工具的用法擦囊。
a. 過濾出帶有某個(gè)關(guān)鍵詞的行并輸出行號

QQ截圖20171023081750.png

b. 過濾不帶有某個(gè)關(guān)鍵詞的行,并輸出行號

QQ截圖20171023081806.png

c. 過濾出所有包含數(shù)字的行

QQ截圖20171023081821.png

在前面也提到過這個(gè)”[ ]”的應(yīng)用嘴办,如果是數(shù)字的話就用[0-9]這樣的形式瞬场,當(dāng)然有時(shí)候也可以用這樣的形式[15]即只含有1或者5,注意涧郊,它不會(huì)認(rèn)為是15贯被。如果要過濾出數(shù)字以及大小寫字母則要這樣寫[0-9a-zA-Z]。另外[ ]還有一種形式妆艘,就是[^字符] 表示除[ ]內(nèi)的字符之外的字符彤灶。

QQ截圖20171023082112.png

這就表示篩選包含oo字符串,但是不包含r字符双仍。
d. 過濾出文檔中以某個(gè)字符開頭或者以某個(gè)字符結(jié)尾的行

QQ截圖20171023082157.png

在正則表達(dá)式中枢希,””表示行的開始,”$”表示行的結(jié)尾朱沃,那么空行則表示”$”,如果你只想篩選出非空行苞轿,則可以使用 “grep -v ‘^$’ filename”得到你想要的結(jié)果∶┯眨現(xiàn)在想一下,如何打印出不以英文字母開頭的行呢搬卒?

QQ截圖20171023082237.png

e. 過濾任意一個(gè)字符與重復(fù)字符

QQ截圖20171023082312.png

“.”表示任意一個(gè)字符瑟俭,上例中,就是把符合r與o之間有兩個(gè)任意字符的行過濾出來契邀。

“*”表示零個(gè)或多個(gè)前面的字符摆寄。


QQ截圖20171023082402.png

‘ooo’ 表示oo, ooo, oooo … 或者更多的’o’∮徊停現(xiàn)在你是否想到了’.’ 這個(gè)組合表示什么意義司浪?

QQ截圖20171023082432.png

‘.*’表示零個(gè)或多個(gè)任意字符,空行也包含在內(nèi)乒融。
f. 指定要過濾字符出現(xiàn)的次數(shù)

QQ截圖20171023082451.png

這里用到了{(lán) }古戴,其內(nèi)部為數(shù)字欠橘,表示前面的字符要重復(fù)的次數(shù)。上例中表示包含有兩個(gè)o 即’oo’的行现恼。注意肃续,{ }左右都需要加上脫意字符’\’。另外叉袍,使用{ }我們還可以表示一個(gè)范圍的始锚,具體格式是 ‘{n1,n2}’其中n1<n2,表示重復(fù)n1到n2次前面的字符喳逛,n2還可以為空瞧捌,則表示大于等于n1次。
上面部分講的grep润文,另外筆者常常用到egrep這個(gè)工具察郁,簡單點(diǎn)講,后者是前者的擴(kuò)展版本转唉,我們可以用egrep完成grep不能完成的工作,當(dāng)然了grep能完成的egrep完全可以完成稳捆。如果你嫌麻煩赠法,egrep了解一下即可,因?yàn)間rep的功能已經(jīng)足夠可以勝任你的日常工作了乔夯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砖织,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子末荐,更是在濱河造成了極大的恐慌侧纯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甲脏,死亡現(xiàn)場離奇詭異眶熬,居然都是意外死亡妹笆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門娜氏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拳缠,“玉大人,你說我怎么就攤上這事贸弥】咦” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵绵疲,是天一觀的道長哲鸳。 經(jīng)常有香客問我,道長盔憨,這世上最難降的妖魔是什么徙菠? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮般渡,結(jié)果婚禮上懒豹,老公的妹妹穿的比我還像新娘。我一直安慰自己驯用,他們只是感情好脸秽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蝴乔,像睡著了一般记餐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上薇正,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天片酝,我揣著相機(jī)與錄音,去河邊找鬼挖腰。 笑死雕沿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的猴仑。 我是一名探鬼主播审轮,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辽俗!你這毒婦竟也來了疾渣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤崖飘,失蹤者是張志新(化名)和其女友劉穎榴捡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朱浴,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吊圾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年达椰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片街夭。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡砰碴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出板丽,到底是詐尸還是另有隱情呈枉,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布埃碱,位于F島的核電站猖辫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砚殿。R本人自食惡果不足惜啃憎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望似炎。 院中可真熱鬧辛萍,春花似錦、人聲如沸羡藐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仆嗦。三九已至辉阶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瘩扼,已是汗流浹背谆甜。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留集绰,地道東北人规辱。 一個(gè)月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像栽燕,于是被迫代替她去往敵國和親按摘。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

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