上篇地址
下篇地址
正则表达式
正则表达式是一种文本模式匹配, 包括普通字符(例如,
a
到z
之间的字母)和特殊字符(称为”元字符”)。它是一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串、将匹配的子串替换或者从某个字符串中取出某个条件的子串。
定位符说明
^ | 锚定开头 ^a 以a开头 默认锚定一个字符 |
---|---|
$ | 锚定结尾 a$ 以a结尾 默认锚定一个字符 |
如果:^
和$
一起使用则表示精确匹配,比如:^ab$
,表示去某个文本中找符合ab的字符串,且是精确匹配。
查找以a
开头的字符串:
egrep “^a” file
查找以c
结尾的字符串:
egrep “c$” file
精确查找,查找ac
字符串
egrep “^ac$” file,等同于egrep “ac” file
匹配符说明:
匹配符 | 说明 |
---|---|
.(点) | 匹配除回车以外的任意一个字符 |
( ) | 字符串分组 |
[ ] | 定义字符类,匹配括号中的一个字符,匹配的字符串来自括号中 |
[ ^ ] | 表示否定括号中出现字符类中的字符,取反 |
\ | 转义字符,将shell中特殊字符,转义成一般字符 |
| | 或 |
以a
开头,c
结尾,中间是任意一个字符:abc
,acc
egrep “^a.c$” file
中间字符来自0-9
数字,a0c
egrep “^a[0-9]c$” file
中间字符,非0-9
数字,aac
egrep “^a[ ^0-9]c$” file
转义字符:此时就真正表示*
号,a*c
egrep “^a \ *c$” file
或字符:以a
开头或者b
开头,a0c
a0b
egrep “^(a|b)c$” file
限定符说明,限定字符串出现的次数
限定符 | 说明 |
---|---|
* | 某个字符之后加星号表示该字符不出现或出现多次 |
? | 与星号相似,但略有变化,表示该字符出现一次或不出现 |
+ | 与星号相似,表示其前面字符出现一次或多次,但必须出现一次 |
{n,m} | 某个字符之后出现,表示该字符最少n次,最多m次 |
{m} | 正好出现了m次 |
以a
开头 c
结尾 中间是有b
或者没有b
长度不限的字符串:ac
abbc
egrep “^ab*c$” file
以a
开头 c
结尾 中间只出现一次b
或者没有b
的字符串:abc
ac
egrep “^ab?c$” file
以a
开头c
结尾 中间是有b
且至少出现一次 长度不限的字符串:abbc
abc
egrep “^ab+c$” file
以a开头 c结尾 中间是有b且至少出现两次最多出现四次 长度不限的字符串:abbc
abbbc
egrep “^ab{2,4}c$” file
以a开头 c结尾 中间是有b且正好出现三次的字符串:abbbc
egrep “^ab{3}c$” file
以a开头 c结尾 中间是有b且至少出现一次的字符串:abbc
abbbc
egrep “^ab{1,}c$” file