shell 正则表达式
shell 正则表达式
1.1 简介
正则表达式是一种表达式可以查找匹配特定准则的文本,其实现原理通过正则表达式引擎(regular expression engine)实现的
Linux主要有两种表达式引擎:
- POSIX基础正则表达式(basic regular expression,BRE)引擎;
- POSIX扩展正则表达式(extended regular expression,ERE)引擎。
正则表达式的特殊字符的使用: . * [] ^ $ {} \ + ? | ()
2.1 正则表达式的特殊字符的使用说明
2.1.1 . 匹配任意一个字符
#它与*不同,一个.就占一个位置
grep r..t /etc/passwd
2.1.2 *匹配前一个字符若干个(带有oo字符的行)。
#这里注意是三个ooo
grep ooo* /etc/passwd
2.1.3 使用^搜索非字母开头的行
grep ^[^a-zA-Z] /etc/passwd
2.1.4 使用$对文本末端进行匹配
cat /etc/passwd |grep bash$
2.1.5 如果想对特殊字符进行匹配,可以使用\。但是\本身是特殊字符所以需要对\进行转移
cat .bash_profile | grep \\$
2.1.6 任意字符
[00:33:05][root@tiaoban:~]# grep "." aaa.txt
aa
aaa
aaaa
aaaaa
bb
bbb
2.1.7 * 表示匹配零次或任意多次
[00:33:40][root@tiaoban:~]# grep "^aaa*$" aaa.txt
aa
aaa
aaaa
aaaaa
2.1.8 ? 表示匹配零次或一次
[00:34:37][root@tiaoban:~]# grep "^aaa\?$" aaa.txt
aa
aaa
2.1.9 + 表示匹配一次或多次
[00:37:17][root@tiaoban:~]# grep '^aaa\+$' aaa.txt
aaa
aaaa
aaaaa
2.1.10 {n,m} 表示匹配n次至m次
[00:37:21][root@tiaoban:~]# grep '^aaa\{1,2\}$' aaa.txt
aaa
aaaa
2.1.11 \b 单词分隔,指匹配单词和空格间的位置
[00:40:53][root@tiaoban:~]# grep 'ex' aaa.txt
alex
alexal
#区别注意
[00:40:39][root@tiaoban:~]# grep 'ex\b' aaa.txt
alex
2.1.12 \w 匹配任何字类字符,等于[a-zA-Z0-9_]
2.1.13 \d 匹配一个数字字符,等于 [0-9] \D 匹配一个非数字字符,等于 [^0-9]。
[00:44:58][root@tiaoban:~]# grep -P '\d' aaa.txt
12
2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!