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