学习正则表达式本质就是学习各种各样的元字符并记住这些元字符的含义。
支持正则表达式的命令:grep、sed、awk、文本编辑器、IDE
一、正则表达式的作用与分类
作用:搜索文本
1.1 搜索字符方式
1️⃣. 精确搜索
2️⃣. 正则表达式搜索
元字符:预定义好的具有特殊含义的符号,这些符号能够进行通配
可读性非常的差
写正则表达式不难
1.2正则表达式的分类
基础正则表达式(BRE:basic regular expression)
扩展正则表达式(ERE:extended regular expression)
编程语言支持的高级正则表达式
BRE和ERE语法基本一致,只有部分元字符(预定义好的带有特殊含义的一些符号)需要区别对待。
扩展正则中这些元字符可直接使用: ? 、 + 、 { 、 } 、 | 、 ( 和 ) 。
基础正则中这些元字符前需要加反斜线转义: \? 、 \+ 、 \{ 、 \} 、 \| 、 \( 和 \) 。
grep sed默认使用基础正则表达式
grep -E、sed -r、egrep、awk扩展正则表达式
二、正则元字符
1.1 匹配字符
| 正则元字符 | abc | 匹配字符串"abc",普通字符的匹配 |
| [abcde...] | 匹配中括号内的任意单个字符 | |
| a[xyz]b | axb、ayb、azb,不能匹配aab amb | |
| \n | 匹配换行符 | |
| \t | 匹配制表符 | |
| \w | 匹配单词字符 [a-zA-Z0-9_] | |
| \W | 匹配非单词字符 [^a-zA-Z0-9_] | |
| \s | 匹配空白字符 | |
| \S | 匹配非空白字符 | |
| \d | 匹配数字 | |
| \D | 匹配非数字 | |
| . | 表示匹配任意单个字符 |


三、grep 命令
| grep | —i | 查找时忽略大小写 |
| —v | 反向查找,输出与查找条件不相符的行 | |
| —o | 只显示匹配项 | |
| —f | 对比两个文件的相同行 | |
| —r | 递归,不找软连接 | |
| —n | 显示匹配的行号 | |
| —c | 只显示的行数 | |
| . | 任意字符 | |
| ^ | 一行的开头 | |
| $ | 一行的结尾 | |
| —e | 实现多个选项间的逻辑or关系,或的意思 | |
| —m | 匹配到 #行停止 | |
| —A | # after, 后#行 | |
| —B | # before, 前#行 | |
| —C | # context, 前后各#行 |


重点:统计当前主机的连接状态
ss -nta | grep -v '^State' |cut -d" " -f1|sort |uniq -c
重点:统计当前连接主机数
ss -nt |tr -s " "|cut -d " " -f5|cut -d ":" -f1 |sort|uniq -c
四、sed
sed 即 Stream EDitor,和 vi 不同,sed是行编辑器
Sed是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行,直到最后一行。
4.1 sed 基本用法
格式:sed 选项 自身脚本语法 支持标准输入管道
| sed | —n | 不输出模式空间内容到屏幕,即不自动打印,加p恢复自动打印 |
| —e | 多点编辑[root@www data]#sed -n -e '/^r/p' -e'/^b/p' /etc/passwd | |
| —f | FILE 从指定文件中读取编辑脚本 | |
| —i.bak | 备份文件并原处编辑 | |
| —d | 删除,删除选定的行 | |
| —a | 增加,在当前行下面增加一行指定内容 | |
| —c | 替换,将选定行替换为指定内容 | |
| —p | 打印,如果指定行,表示打印指定行;不指定行,表示打印所有内容;通常与"-n"选项一起使用。 | |
| —r | 使用扩展正则表达式 |


seq 10 |sed -n '1~2p'
seq 10 |sed '2~2d'
#打印奇数行
seq 10 |sed -n '2~2p'
seq 10 |sed '1~2d'
#打印偶数行

sed -n '/2023:09:30:58/,/2023:09:32:30/p' 文件名
打印文件里时间段内的
4.2 sed 脚本格式
格式 '地址+命令'组成 单引号中间需要写脚本;脚本格式如下
#删除指定行并不是真正删除,只是将删除了的结果显示出来,并不是真正删除了
cat 1.txt |sed '3d'
#删除第三行并显示出来
sed '2,4d' seq.txt
#删除连续的2到4行
sed '/^$/d' /opt/seq.txt 删除文本中的空行

先备份内容再删除
sed -i.bak '3d' 1.txt
#原文件删除第三行,并原文备份

sed -i '2a charu' 1.txt #在第二行后插入内容

sed -i '5c 替换的内容' 1.txt

4.3 分组调用
#分组使用()(),调用第一段使用\1
echo 11aaxx |sed -r 's/(11)(aa)(xx)/\1/'
#调用第2个分组
echo 11aaxx |sed -r 's/(11)(aa)(xx)/\2/'
#调用所有分组
echo 11aaxx |sed -r 's/(11)(aa)(xx)/\1\2\3/'

筛选出网卡

查出/tmp/的权限,以数字方式显示
1367

被折叠的 条评论
为什么被折叠?



