正则表达式
字符 | 作用 |
---|---|
. 点号 | 匹配任意一个且只有一个字符 |
[] | 匹配[]集合内的任意一个字符 |
[^] | 匹配不包含^后的任意字符 |
*星号 | 重复前一个字符(连续出现)0次或N次 |
.* 组合符 | 匹配所有内容 |
? | 匹配其前面的任意单个字符1次或0次 |
+ | 匹配其前面的任意单个字符至少1次 |
/ 转义字符 | 让有特殊含义的字符输出自身 |
{m,n} | 匹配其前面的任意单个字符至少m次,至多n次 |
^ 尖角号 | 表示匹配以尖角号后面的单词开头的行 |
$ 美元符 | 表示匹配以美元符后面的单词结尾的行 |
^$ 组合符 | 表示空行 |
<或/b | 锚定词首,其后面的任意单个字符必须作为单词首部出现 |
>或/b | 锚定词尾,其前面的任意单个字符必须作为单词尾部出现 |
/分组
()
例:(ab)*
//后向引用
/1 //引用第一个左括号以及与之对应的右括号所包括的所有内容
/2 //引用第二个左括号以及与之对应的右括号所包括的所有内容
. 点号 匹配任意一个且只有一个字符
[root@localhost ~]# vim a.txt
[root@localhost ~]# cat a.txt
abc
acb
accb
zcxdsd
eerd
fbd
cc
vvddx
ddf
[root@localhost ~]# grep . a.txt //匹配所有字符(不包括空行)
abc
acb
accb
zcxdsd
eerd
fbd
cc
vvddx
ddf
[root@localhost ~]# grep a. a.txt //匹配a和a后一个字符
abc
acb
accb
[root@localhost ~]# grep .c a.txt //匹配c和c前一个字符
abc
acb
accb
zcxdsd
cc
[] 匹配[]集合内的任意一个字符
[root@localhost ~]# grep "[abc]" a.txt
abc
acb
accb
zcxdsd
fbd
cc
[root@localhost ~]# grep "[zc]" a.txt
abc
acb
accb
zcxdsd
cc
[^] 匹配不包含^后的任意字符
[root@localhost ~]# grep "[^abc]" a.txt
zcxdsd
eerd
fbd
vvddx
ddf
[root@localhost ~]# grep "[^zc]" a.txt
abc
acb
accb
zcxdsd
eerd
fbd
vvddx
ddf
*** 星号 重复前一个字符(连续出现)0次或N次**
[root@localhost ~]# grep "a*" a.txt
abc
acb
accb
zcxdsd
eerd
fbd
cc
vvddx
ddf
[root@localhost ~]# grep "z*" a.txt
abc
acb
accb
zcxdsd
eerd
fbd
cc
vvddx
ddf
.* 组合符 匹配所有内容
[root@localhost ~]# grep ".*" a.txt
abc
acb
accb
zcxdsd
eerd
fbd
cc
vvddx
ddf
** ?匹配其前面的任意单个字符1次或0次**
[root@localhost ~]# grep 'ab/?' a.txt
abc
acb
accb
[root@localhost ~]# grep 'a/?' a.txt
abc
acb
accb
zcxdsd
eerd
fbd
cc
vvddx
ddf
+匹配其前面的任意单个字符至少1次
[root@localhost ~]# grep 'a/+' a.txt
abc
acb
accb
[root@localhost ~]# grep 'ab/+' a.txt
abc
{m,n} 匹配其前面的任意单个字符至少m次,至多n次
[root@localhost ~]# touch aaa
[root@localhost ~]# touch aaabbb
[root@localhost ~]# touch edddd ddddvvvvccc aaabbbddd
[root@localhost ~]# ls |grep '^a/{1,/}$'
aaa
[root@localhost ~]# ls |grep '^ed/{1,/}$'
edddd
[root@localhost ~]# touch a ab
[root@localhost ~]# ls | grep '^ab/{0,1/}$'
a
ab
[root@localhost ~]# ls | grep '^ab/{1/}$'
ab
[root@localhost ~]# ls |grep '^ab/{6/}$'
abbbbbb
^ 尖角号 表示匹配以尖角号后面的单词开头的行
[root@localhost ~]# cat a.txt
abc
acb
accb
zcxdsd
eerd
fbd
cc
vvddx
ddf
[root@localhost ~]# grep ^a a.txt
abc
acb
accb
$ 美元符 表示匹配以美元符后面的单词结尾的行
[root@localhost ~]# cat a.txt
abc
acb
accb
zcxdsd
eerd
fbd
cc
vvddx
ddf
root@localhost ~]# grep b$ a.txt
acb
accb
^$ 组合符 表示空行
[root@localhost ~]# grep "^$" a.txt
[root@localhost ~]# grep acb a.txt |grep -v "^$" > /root/my
[root@localhost ~]# cat /root/my
acb
[root@localhost ~]# vim a
[root@localhost ~]# cat a
hello world
haha
[root@localhost ~]# grep '^$' a
[root@localhost ~]# grep -v '^$' a
hello world
haha
<或/b锚定词首,其后面的任意单个字符必须作为单词首部出现
>或/b 锚定词尾,其前面的任意单个字符必须作为单词尾部出现
[root@localhost ~]# vim b
[root@localhost ~]# cat b
hello world hello xbz hello xbb
haha
[root@localhost ~]# grep 'hello' b
hello world hello xbz hello xbb
[root@localhost ~]# grep '^hello' b
hello world hello xbz hello xbb
[root@localhost ~]# grep '/<hello' b
hello world hello xbz hello xbb
[root@localhost ~]# vim b
[root@localhost ~]# cat b
hello world hello xbz hello xbb
ddf fffdff dddddf hello
haha
root@localhost ~]# grep '/<hello' b
hello world hello xbz hello xbb
ddf fffdff dddddf hello
[root@localhost ~]# grep 'hello/>' b
hello world hello xbz hello xbb
ddf fffdff dddddf hello
[root@localhost ~]# grep 'hello/b' b
hello world hello xbz hello xbb
ddf fffdff dddddf hello
[root@localhost ~]# grep 'hello/>' b
hello world hello xbz hello xbb
ddf fffdff dddddf hello
扩展正则表达式
字符匹配
. //匹配任意单个字符
[] //匹配指定范围内的任意单个字符
[^] //匹配指定范围外的任意单个字符
单个字符匹配相关
[[:alpha:]] 表示任意大小写字母。
[[:lower:]] 表示任意小写字母。
[[:upper:]] 表示任意大写字母。
[[:digit:]] 表示0到9之间的任意单个数字(包括0和9)。
[[:alnum:]] 表示任意数字或字母。
[[:space:]] 表示任意空白字符,包括"空格"、"tab键"等。
[[:punct:]] 表示任意标点符号。
[^[:alpha:]] 表示单个非字母字符。
[^[:lower:]] 表示单个非小写字母字符。
[^[:upper:]] 表示单个非大写字母字符。
[^[:digit:]] 表示单个非数字字符。
[^[:alnum:]] 表示单个非数字非字母字符。
[^[:space:]] 表示单个非空白字符。
[^[:punct:]] 表示单个非标点符号字符。
[0-9]与[[:digit:]]等效。
[a-z]与[[:lower:]]等效。
[A-Z]与[[:upper:]]等效。
[a-zA-Z]与[[:alpha:]]等效。
[a-zA-Z0-9]与[[:alnum:]]等效。
[^0-9]与[^[:digit:]]等效。
[^a-z]与[^[:lower:]]等效。
[^A-Z]与[^[:upper:]]等效
[^a-zA-Z]与[^[:alpha:]]等效
[^a-zA-Z0-9]与[^[:alnum:]]等效
次数匹配
* //匹配其前面的任意单个字符任意次
? //匹配其前面的任意单个字符1次或0次
+ //匹配其前面的任意单个字符至少1次
{m,n} //匹配其前面的任意单个字符至少m次,至多n次
位置锚定
^ //锚定行首,此字符后面的任意单个字符必须出现在行首
$ //锚定行尾,此字符前面的任意单个字符必须出现在行尾
^$ //空白行
/<或/b //锚定词首,其后面的任意单个字符必须作为单词首部出现
/>或/b //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
分组
() //分组
/1,/2,/3,....
例:(ab)*
//后向引用
/1 //引用第一个左括号以及与之对应的右括号所包括的所有内容
/2 //引用第二个左括号以及与之对应的右括号所包括的所有内容
//或者
| //or 默认匹配|的整个左侧或者整个右侧的内容
//例:C|cat表示C或者cat,要想表示Cat或者cat则需要使用分组,如(C|c)at
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/289686.html