正规表示式是一种符号表示法,用于识别文字模式。 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 、 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:]
空白字元,等价于 [trnvf]

[:punct:]
标点符号

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

例子