什么是正则表达式、文本三剑客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 命令

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
—fFILE 从指定文件中读取编辑脚本
—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/的权限,以数字方式显示

​​​​​​​

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值