共计 1205 个字符,预计需要花费 4 分钟才能阅读完成。
正则表达式是一种符号表示法,用于识别文本模式。Linux 处理正则表达式的主要程序是 grep。grep 搜索与正则表达式匹配的行,并将结果输送至标准输出。
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 三个文件的内容如下
例子
特殊字符
符号 含义 举例
^ 开始标记 "^abc" 满足的例子 abc、abcd
^ 非(在 [] 内)"[^abc]" 满足的例子:ddd、mpd
$ 结束标记”abc$”满足的例子 abc、mmabc
. 任意字符 "a.c" 满足的例子 abc、fapcc
\ 匹配单词结束 "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
[] []内如果不是范围,选其一;是范围的话,范围内选其一 "m[abc]p" 满足的例子 acpd;m[1-9]p 满足的例子 m8pp
() 将候选的所有元素放在 () 内,用 | 隔开 "a(1|2|3)bc" 满足的例子 a1bc、mba3bcd
注意:{}在郑则表达式中需要转移,而 {}() 不需要。
注意理解 {} 范围的例子:
标准字符类
字符类 释义
[: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
正文完
星哥玩云-微信公众号