定义:RegExp(Regular Expression),由普通字符和元字符组成的一种用来描述字符串的匹配的模式(pattern)
1 元字符(基本&扩展&perl)
1.1 基础元字符
.
:匹配单个任意字符|
:(扩展),或,选择功能
1.2 次数
*
:前一个字符出现任意次?
:(扩展),前一个字符出现 ≤ 1次+
:(扩展),前一个字符出现 ≥ 1次{n,m}
:(扩展),前一个字符出现n到m次{5,}
:≥ 5次{,5}
:≤ 5次{5,5}
:= 5次
1.3 位置锚定
^
:开头$
:结尾^$
:开头和结尾里没内容,表示空白行
1.4 “单词”边界
\<
:“单词”左边界\>
:“单词”右边界\b
:“单词”左右边界,一次用两个echo "the there they" | grep "\bthe\b"
:匹配the
1.5 分组
()
:(扩展),将某些字符作为一个整体- 分组后可以在后面引用分组
grep -E "^(.).*\1$" test
:匹配开头字符和结尾字符相同的行
1.6 字符组
[]
:匹配字符组中的任意一个字符[abc]
[0-9]
[a-z]
[A-Z]
[a-zA-Z]
[:upper:]
:相当于[A-Z]
[:lower:]
:相当于[a-z]
[:alnum:]
:匹配数字、大小写字母及下划线[:alpha:]
:只匹配大小写字母[:digit:]
:只匹配数字
- PERL支持
\d
:相当于[0-9]\D
:除了[0-9]\s
:空白符,如空格、制表符等\S
:除了空白符\w
:数字、大小写字母及下划线\W
:除了数字、大小写字母及下划线
2 grep
使用正则表达式匹配符合条件的字符串
- 语法:
grep [options] ‘PATTERM’ FILE’
选项 | 作用 |
---|---|
-E | 支持扩展正则表达式 |
-P | 支持PERL正则表达式(也支持扩展) |
-n | 显示行号 |
-i | ignorecase,忽略大小写 |
-o | match-only,只输出匹配到的内容 |
-v | invert,反向匹配 |
-A N | after,输出匹配到的行和后N行 |
-B N | before,输出匹配到的行和前N行 |
-C N | both,输出匹配到的行和前后N行 |