shell脚本·正则表达式
2022/9/16 5:17:38
本文主要是介绍shell脚本·正则表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
正则表达式
字符 | 作用 |
---|---|
. 点号 | 匹配任意一个且只有一个字符 |
[] | 匹配[]集合内的任意一个字符 |
[^] | 匹配不包含^后的任意字符 |
*星号 | 重复前一个字符(连续出现)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
这篇关于shell脚本·正则表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-11正则表达式教程:初学者指南
- 2024-09-11正则表达式学习:入门指南与实践技巧
- 2024-08-15正则表达式入门:基础教程与实践指南
- 2024-01-0939. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换
- 2024-01-08如何编写高效的正则表达式?
- 2023-12-29"Matlab中的正则表达式:强大而灵活的工具"
- 2023-09-30这个正则 为啥同样的单号第二个就提取不出来?
- 2023-06-086.2 re 正则表达式
- 2023-06-06将字符串里的\x01,\x02这些替换掉用正则表达式无效?
- 2023-05-24正则表达式详解