Linux正則表達式grep基礎入門

正則表達式是一種符號表示法,用於識別文本模式。Linux處理正則表達式的主要程序是grep。grep搜索與正則表達式匹配的行,並將結果輸送至標準輸出。

1. grep匹配模式

grep按下述方式接受選項和參數(其中,regex表示正則表達式)

grep [options] regex [files]

其中options主要為下表:

選項含義功能描述-iignore case忽略大小寫-vinvert match不匹配匹配的-lfile-with-match輸出匹配的文件名-Lfile-without-match輸出不匹配的文件名-ccount輸出匹配的數目(行數)-nnumber輸出匹配行的同時在前面加上文件名及在文件名中的行數-hno-filename抑制文件名的輸出

舉例說明

假設有三個文件del1、del2、del3三個文件的內容如下

Linux正則表達式grep基礎入門

例子

Linux正則表達式grep基礎入門

2. 特殊字符

符號含義舉例^開始標記"^abc"滿足的例子abc、abcd^非(在[]內)"[^abc]"滿足的例子:ddd、mpd$結束標記”abc$”滿足的例子abc、mmabc.任意字符"a.c"滿足的例子abc、fapcc\匹配單詞結束"abc\>"滿足的例子abc、pmrabc|或"AAA|BBB"滿足的例子AAA、BBBpp

3. 範圍

符號含義舉例

?匹配前一個字符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[]

[]內如果不是範圍,選其一;是範圍的話,範圍內選其一"m[abc]p"acpd;m[1-9]p滿足的例子:m8pp

()將候選的所有元素放在()內,用|隔開"a(1|2|3)bc"滿足的例子:a1bc、mba3bcd

注意:{}在鄭則表達式中需要轉移,而{}()不需要。

注意理解{}範圍的例子:

Linux正則表達式grep基礎入門

4. 標準字符類

字符類釋義

[:alnum:]:字母和數字,與[A-Za-z0-9]等價

[:word:]:[:alnum:]加上下劃線_

[:alpa:]:字母,與[A-Za-z]等價

[:digit:]:數字,與[0-9]等價

[:xdigit:]:十六進制字符,與[0-9A-Fa-f等價]

[:blank:]:空格和製表符

[:graph:]:可見字符,靠擴33~126

[:lower:]:小寫字母

[:upper:]:大寫字母

[:print:]:可打印字符

[:space:]:空白字符,等價於[\t\r\n\v\f]

[:punct:]:標點符號

[:cntrl:]:ASCII控制碼,包括字符0~31以及127

例子

Linux正則表達式grep基礎入門


分享到:


相關文章: