什么是正则表达式、文本三剑客grep、sed

 学习正则表达式本质就是学习各种各样的元字符并记住这些元字符的含义。

支持正则表达式的命令: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、sed_第1张图片

什么是正则表达式、文本三剑客grep、sed_第2张图片

三、grep 命令

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

什么是正则表达式、文本三剑客grep、sed_第3张图片

什么是正则表达式、文本三剑客grep、sed_第4张图片

重点:统计当前主机的连接状态

 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  使用扩展正则表达式

 

什么是正则表达式、文本三剑客grep、sed_第5张图片

seq 10 |sed -n '1~2p'

seq 10 |sed '2~2d'

#打印奇数行

seq 10 |sed -n '2~2p'

seq 10 |sed '1~2d'

#打印偶数行

什么是正则表达式、文本三剑客grep、sed_第6张图片

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   删除文本中的空行

什么是正则表达式、文本三剑客grep、sed_第7张图片

先备份内容再删除

sed -i.bak '3d' 1.txt

#原文件删除第三行,并原文备份

什么是正则表达式、文本三剑客grep、sed_第8张图片

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

什么是正则表达式、文本三剑客grep、sed_第9张图片

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

什么是正则表达式、文本三剑客grep、sed_第10张图片

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/'

筛选出网卡

什么是正则表达式、文本三剑客grep、sed_第11张图片

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

什么是正则表达式、文本三剑客grep、sed_第12张图片​​​​​​​

你可能感兴趣的:(正则表达式)