正則表達(dá)式是一種符號(hào)表示法,用于識(shí)別文本模式。linux處理正則表達(dá)式的主要程序是grep。grep搜索與正則表達(dá)式匹配的行,并將結(jié)果輸送至標(biāo)準(zhǔn)輸出。
grep匹配模式
grep按下述方式接受選項(xiàng)和參數(shù)(其中,Regex表示正則表達(dá)式)
grep [options] regex [files]
其中options主要為下表:
選項(xiàng) 含義 功能描述 -i ignore case 忽略大小寫(xiě) -v invert match 不匹配匹配的 -l file-with-match 輸出匹配的文件名 -L file-without-match 輸出不匹配的文件名 -c count 輸出匹配的數(shù)目(行數(shù)) -n number 輸出匹配行的同時(shí)在前面加上文件名及在文件名中的行數(shù) -h no-filename 抑制文件名的輸出
舉例說(shuō)明
假設(shè)有三個(gè)文件del1、del2、del3三個(gè)文件的內(nèi)容如下
例子
特殊字符
符號(hào) 含義 舉例 ^ 開(kāi)始標(biāo)記 "^abc"滿(mǎn)足的例子abc、abcd ^ 非(在[]內(nèi)) "[^abc]"滿(mǎn)足的例子:ddd、mpd $ 結(jié)束標(biāo)記 ”abc$”滿(mǎn)足的例子abc、mmabc . 任意字符 "a.c"滿(mǎn)足的例子abc、fapcc < 匹配單詞開(kāi)始 " 匹配單詞結(jié)束 "abc>"滿(mǎn)足的例子abc、pmrabc | 或 "AAA|BBB"滿(mǎn)足的例子AAA、BBBpp
范圍
符號(hào) 含義 舉例 ? 匹配前一個(gè)字符0或1次 "abc?"滿(mǎn)足的例子ab、mabcd * 匹配前一個(gè)字符≥0次 "abc*"滿(mǎn)足的例子abbb、abcdk + 匹配前一個(gè)字符≥1次 "abc+"滿(mǎn)足的例子abcd、abcccdd {} {m}、{m,n}、{m,}、{,n}分別為匹配前一個(gè)字符m次、m到n次、≥m次、≤n次 "abc{3,5}"滿(mǎn)足的例子abcccc、abcccccc [] []內(nèi)如果不是范圍,選其一;是范圍的話,范圍內(nèi)選其一 "m[abc]p"滿(mǎn)足的例子acpd;m[1-9]p滿(mǎn)足的例子m8pp () 將候選的所有元素放在()內(nèi),用|隔開(kāi) "a(1|2|3)bc"滿(mǎn)足的例子a1bc、mba3bcd
注意:{}在鄭則表達(dá)式中需要轉(zhuǎn)移,而{}()不需要。
注意理解{}范圍的例子:
標(biāo)準(zhǔn)字符類(lèi)
字符類(lèi) 釋義 [:alnum:] 字母和數(shù)字,與[A-Za-z0-9]等價(jià) [:word:] [:alnum:]加上下劃線_ [:alpa:] 字母,與[A-Za-z]等價(jià) [:digit:] 數(shù)字,與[0-9]等價(jià) [:xdigit:] 十六進(jìn)制字符,與[0-9A-Fa-f等價(jià)] [:blank:] 空格和制表符 [:graph:] 可見(jiàn)字符,靠擴(kuò)33~126 [:lower:] 小寫(xiě)字母 [:upper:] 大寫(xiě)字母 [:print:] 可打印字符 [:space:] 空白字符,等價(jià)于[ ] [:punct:] 標(biāo)點(diǎn)符號(hào) [:cntrl:] ASCII控制碼,包括字符0~31以及127