正則表達式是一種符號表示法,用於識別文本模式。Linux處理正則表達式的主要程序是grep。grep搜索與正則表達式匹配的行,並將結果輸送至標准輸出。
1. grep匹配模式
grep按下述方式接受選項和參數(其中,regex表示正則表達式)
grep [options] regex [files]
其中options主要為下表:
| 選項 | 含義 | 功能描述 |
| -i | ignore case | 忽略大小寫 |
| -v | invert match | 不匹配匹配的 |
| -l | file-with-match | 輸出匹配的文件名 |
| -L | file-without-match | 輸出不匹配的文件名 |
| -c | count | 輸出匹配的數目(行數) |
| -n | number | 輸出匹配行的同時在前面加上文件名及在文件名中的行數 |
| -h | no-filename | 抑制文件名的輸出 |
舉例說明
假設有三個文件del1、del2、del3三個文件的內容如下

例子

2. 特殊字符
| 符號 | 含義 | 舉例 |
| ^ | 開始標記 | "^abc"滿足的例子abc、abcd |
| ^ | 非(在[]內) | "[^abc]"滿足的例子:ddd、mpd |
| $ | 結束標記 | ”abc$”滿足的例子abc、mmabc |
| . | 任意字符 | "a.c"滿足的例子abc、fapcc |
| \< | 匹配單詞開始 | "\<abc"滿足的例子abc、abcd |
| \> | 匹配單詞結束 | "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 |
注意:{}在鄭則表達式中需要轉移,而{}()不需要。
注意理解{}范圍的例子:

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 |
例子

可視化正則表達式
工具:Regexper

