linux 模式表达式,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、^ 表示开头

cfb287298fbf626e2b112161f2bfde1e.png

基础正则2、$ 表示结尾

3d694ddf4a2018c46daf8f65fa8608a9.png

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

da9ff546b37411f8fe0fb1d167cd36f6.png

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

06e0c808f478dd6a66d9bcdcbecde86c.png

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

9b8f31c234b8e823a75bc30337aff23f.png

此例是:匹配内容a,b,c 的行

e88a0dd50cc0d045535c231b9e9068f6.png

此例是:匹配内容 x,y,z的行

e995ad2e0b26c658023bdd378b7db7fa.png

此例是:这样用是匹配所有字母大小写

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

53ae69704615cad36290c64a439fd1b4.png

此例是:过滤所有不包含a或b或d…的行

基础正则7、\ 转义

033b125989be1e954a403de370c3f8c7.png

基础正则组合用法

环境准备:

00d6241d8a53005a3b4f38705ceb3920.png

1、^$空行

f62a79a146995e9272b3b7bdf83e1fb4.png

2、. 任意字符

edeb871d99453f141d76da6a888c0f23.png

扩展正则(4个)

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

4d548c8f41a1c36af2e34f60216f78f4.png

此例是:匹配啊a,b,c,d一次或一次以上

扩展正则2、| 或

9fce690675df1b9499a77038bc2df44c.png

在这里 | 就代表或,而不是管道符的意思,匹配或bi 或ro

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

543c48f2b40854b653809ccc92d7a49e.png

此例:\ 1 调取前面的括号内的内容

^.* 任意字符开头

.* $任意字符结尾

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

有些人可能觉得?好和*输出结果差不多,那我们比较一下

ee77f561f05ce8944eb3ae0ae6060c46.png

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

1、不论基础正则还是扩展正则,最怕中文符号,哪怕写的在对,也不会成功

2、基础正则和扩展正则支持的命令不同

基础正则:grep 、sed 、awk

扩展正则:egrep(grep -E) 、sed -r 、awk

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

附一张Linux常用快捷键

146186d750c1189a63f99529b27ee8f5.png

最后加油把!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值