linux:正则表达式的正确用法和示例

什么是正则?为何使用正则?使用正则我们可以达到什么样的效果?

正则表达式分两种:1、基本正则表达式 2、扩展正则表达式
注意:学习正则之前先明确我们所用的输入法是否是因英文(正则最怕中文符号)
什么是正则:正则表达式就是为处理大量的字符串而定义的一套规则和方法。通过定义的这些特殊符号的辅助,管理员就可以快速过滤、替换或输出需要的字符串。linux正则表达式一般以行为单位处理的。linux中最常用的正则表达式的命令就是grep(egrep),sed,awk等,linux三剑客要想能工作的更高效,就一定离不开正则表达式。
好!让我们现在开始学习正则表达式
环境准备:

[root@yu xuexi]# cat /etc/passwd > 123
[root@yu xuexi]# cat 123
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin

基础正则(7个)组合(2个)

基础正则1、^ 表示开头

在这里插入图片描述

基础正则2、$ 表示结尾

在这里插入图片描述

基础正则3、. 匹配任意一个字符

在这里插入图片描述

基础正则4、* 匹配零个或多个

linux:正则表达式的正确用法和示例_第1张图片

基础正则5、[] 匹配[]中的内容

linux:正则表达式的正确用法和示例_第2张图片
此例是:匹配内容a,b,c 的行
linux:正则表达式的正确用法和示例_第3张图片
此例是:匹配内容 x,y,z的行
linux:正则表达式的正确用法和示例_第4张图片
此例是:这样用是匹配所有字母大小写

基础正则6、[^]不匹配括号内的内容

linux:正则表达式的正确用法和示例_第5张图片
此例是:过滤所有不包含a或b或d…的行

基础正则7、\ 转义

linux:正则表达式的正确用法和示例_第6张图片

基础正则组合用法

环境准备:
在这里插入图片描述
1、^$空行
在这里插入图片描述
2、. 任意字符
linux:正则表达式的正确用法和示例_第7张图片

扩展正则(4个)

扩展正则1、+ 匹配前一个字符一次或多次

linux:正则表达式的正确用法和示例_第8张图片
此例是:匹配啊a,b,c,d一次或一次以上

扩展正则2、| 或

linux:正则表达式的正确用法和示例_第9张图片
在这里 | 就代表或,而不是管道符的意思,匹配或bi 或ro

扩展正则3、() 表示一个整体,用 \ 数字,引用前面括号里的内容

linux:正则表达式的正确用法和示例_第10张图片
此例:\ 1 调取前面的括号内的内容
^.* 任意字符开头
.* $任意字符结尾

扩展正则4、? 匹配前一个字符0次或一次

有些人可能觉得?好和*输出结果差不多,那我们比较一下
在这里插入图片描述

最后基础正则和扩展正则要注意的几点:

1、不论基础正则还是扩展正则,最怕中文符号,哪怕写的在对,也不会成功
2、基础正则和扩展正则支持的命令不同
基础正则:grep 、sed 、awk
扩展正则:egrep(grep -E) 、sed -r 、awk

3、贪婪模式:尽可能长的匹配

附一张Linux常用快捷键

linux:正则表达式的正确用法和示例_第11张图片
最后加油把!

你可能感兴趣的:(linux入门)