【运维知识基础篇】通配符与正则表达式

吾日三省吾身,想出类拔萃,要把知识学牢,学全,学深,学广。


特殊符号

?      表示任意单个字符
ll ?.txt

统计文件字符长度
cat 1.txt|wc -L
只会显示文件中最长一段的字符长度

单引号双引号不加引号的区别 与变量有关
echo $name  echo "$name" 输出变量
echo '$name'              输出$name字符
单引号所见即所得,不会解析变量

基础正则表达式

正则表达式 简单 高效 易用
三剑客用的都是正则
普通命令用的都是通配符
通配符找文件名称
正则表达式找文件内容

基本正则表达式无法满足需求,就出现了扩展正则表达式
^ $ . [ ] *
( ) {} ? + | 等等

^ #以什么什么开头的行
[root@VMware-koten ~]#grep '^m' test.txt 

$ #以什么什么结尾的
[root@VMware-koten ~]#grep '!$' test.txt

cat -A test.txt 在每行的结尾加$符号

空格 #可以过滤空格
[root@VMware-koten ~]#grep ' ' test.txt

$           后面跟变量 用双引号就匹配变量,用单引号就是原文本
^$          表示空行
grep -n     显示过滤前内容所在的行号
grep -v     取反,匹配出来之后,显示除了这个之外的其他的内容
.           表示除换行符外其他所有单个字符
..          每次匹配两个字符
-o          每一个字符都会按列输出
.$          每一行末尾都能匹配上,空格也能匹配上
\.$         以.结尾
\           转义字符
\n          换行符
\t          tab键
*           前一个字符出现0及0次以上,如果没有,则显示所有内容
            匹配到了再-o,会把匹配的部分,匹配的一个部分显示一行
.*          所有字符,并且-o后每一个部分显示一行
[0-9a-zA-Z:,.]   匹配区间,中括号也有脱马甲的意思,所以说.前面不用加撬棍

基础正则小结
^            以什么开头的行
$            以什么结尾的行
.            任意单个字符
.*           任意所有字符
^$           表示空行
[abc]        表示任意单个字符,中括号中还原本意
[^abc]       除了abc其他的字符,都匹配,^在中括号中取反
^[abc]       查找要么a要么b要么c开头的
[^^abc]      第一个是取反,第二个是还原本意,普通字符
[0-9]        区间也支持
[a-z]        区间也支持
[0-9a-zA-Z]  区间也支持
[a-Z]        区间也支持

扩展正则表达式

(){}?+|
grep -E      支持扩展正则
egrep        支持扩展正则
+            前一个字符出现1次及1次以上 跟*的区别是出现0次不会所有内容都出现
|            或者,可以同时过滤多个条件
1{n,m}       前一个数字1最少出现n次,最多出现m次,可能出现部分比m次数多,但是-o会发现一行最多m次
1{m}         前一个数字1最多出现m次
()           一个整体,配合+使用,如果是一个整体-o,出现部分如何连续,会连贯出现。
             如果只是一个字符出现1次或1次以上,会一个一列出现

企业常用正则表达式

1.过滤以什么开头 ^ ^#
2.^$ 空行
3.[]
4.[]+ awk结合
5.sed后向引用()

常用通配符
1.*.txt
2.[1-9].txt
3.{}

正则使用案例分享

1、将ip add中的ip筛选出来。

d239f9749f8c4ecdab44d08c7f55e72c.png

2、我们看到IP所在行是eth0结尾的,将IP所在行筛选出来

ip add|grep 'eth0$'
cd073b134dd04a0abac08989697246c2.png

3、我们知道IP是由0-9数字和点组成,我们通过这个方式筛选。设置中括号里面字符最多出现10次。

ip add|grep 'eth0$'|egrep [0-9.]{10}
d6ab6cb8bd4a4431b941b3d07e97a804.png

4、当然IP数字和点出现次数不一定每次都是10,如果找通用方法,我们需要用拼接的方式。

ip add|grep 'eth0$'|egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
cd17703ce0694ed3aafe9ff3438e61b3.png

5、匹配到该行IP就好说了,咱们直接grep -o,然后head -1即可。

ip add|grep 'eth0$'|egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' -o |head -n1
5dbc09493b9644b7a08945dca075a865.png

大功告成!


我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是koten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值