shell编程--正则表达式

devtools/2024/12/22 9:26:51/

正则表达式

正则表达式都被置于两个正斜杠之间;如/l[oO]ve/

示例

匹配数字的脚本,用户输入创建账号的数量

语法: [[ ^[0-9]+$ ]]

表示必须输入数字

#!/bin/bashwhile :
do
read -p "输入数字:" numif [[ $num =~ ^[0-9]+$ ]]thenecho "再见"exitelseecho "重新输入"fi
done
#!/bin/bash
read -p "你好,请输入姓名:" namewhile :
do
read -p "你是傻子吗,请输入 是:" numif [ $num = "是"]thenecho "大傻子,$name,再见"exitelseecho "重新输入"fi
done

元字符

定义

元字符表达不同于字面本身的含义

分类

基本正则

^    行首定位符
# cat /etc/passwd#找出root
grep root /etc/passwd#找出行首为root
grep "^root" /etc/passwd
$  行尾定位符
vim 1.txt
i loveyou
love
loveyou#############################
grep "love$" 1.txt
.  匹配任意单个字符
vim 1.txt
abc
adc###############################
grep a.c 1.txt
*  匹配前导符0次到多次
vim 1.txt
a
ab
abc
abcd
abcde
abcdef
gg
hh
ii########################################grep "abc*" 1.txtab
abc
abcd
abcde
abcdef#ab后面好想有c,好像也没有,c出现0次到多次grep "abcde*" 1.txtabcd
abcde
abcdef#e出现0次到多次
.* 任意多个字符
grep ".*" 1.txta
ab
abc
abcd
abcde
abcdef
gg
hh
ii###################################
为什么*.不可以
*前面没有前导符
[ ] 匹配指定范围内的一个字符
vim 1.txt
love
Love
1love
|ove#################################################
grep "[lL]ove" 1.txtlove
Love#取反
grep "[^lL1]ove" 1.txt
|ovegrep "[a-z]ove" 1.txt
love#####################################################
[0-5][0-9] 匹配00-59
[0-9]匹配0-9
[ - ]  匹配指定范围内的一个字符连续的范围
[0-9]0到9
[a-z]a到z
[A-Z]A到Z
[ ^ ] 匹配不在指定组内的字符

取反

[^0-9]非数字
[^a-z]非小写字母
\ 转义符
grep "l." 1.txt
love
l.ve\.  转义.
grep "l\." 1.txt
l.ve用来转义元字符("" '' \)
''强引用
\<  词首定位符
vim 1.txt
iloveyou
love
1love###############################
grep "\<love" 1.txt
查找以love开头的
\> 词尾定位符
grep "love\>" 1.txt
love
查找以love结尾的
() 匹配稍后使用的字符标签

vim末行模式

iloveyou
loveyou
1love:1,2 s/\(.*\)/#\1/
#定位1,2行,s///模式,括号得转义,.*匹配所有字符,\1表示第一次括号引用选中的内容,#表示在定位的1,2行前面加#192.168.1.1:%s/192.168.1.1/192.168.2.3/
#s///就是替换,把1.1替换为2.3192.168.2.2:% s/\(192\)/123\1/
#在192前面加123
x\{m\}  字符x重复几次
love
loove
looove
loooove
looooove
loooooovegrep "o\{3\}" 1.txt
looove
loooove
looooove
loooooove
looooooove
#o重复3符的字符,{}也得转义
x\{m,\} 字符重复出现m次以上
grep "0\{3,\}" 1.txt

x\{m,n\} 字符x重复出啊先m到n次
grep "o\{3,4\}" 1.txt

行首行尾与词首词尾

iloveyou
ilove
loveyou
aaa iloveyou bbb
ccc ilove ddd
eee loveyou fff####################################
grep "^love" 1.txt
loveyougrep "\<love" 1.txt
loveyou
eee loveyou fffgrep "love$" 1.txt
ilovegrep "love\>" 1.txt
ilove
ccc ilove ddd

扩展正则元字符

+  匹配前导符1到n次
lve
love
loove
looove##############################grep -E
egrep 
这两个可以识别扩展元字符
#################################
egrep lo+ve 1.txt
love
loove
loove#  *0到多次
? 匹配前导符0到1次
egrep "lo?ve" 1.txt
lve
love
a|b 匹配a或b
egrep "o|v" 1.txt
lve
love
loove
looove
looove
() 组字符
rs
loveable
lovers##########################################
egrep "love(able|rs)" 1.txt
loveabgle
loversegrep "loveable|rs" 1.txt
rs
loveable
lovers


http://www.ppmy.cn/devtools/108909.html

相关文章

Windows下Python和PyCharm的应用(三)__Numpy与矩阵

1、背景介绍 矩阵运算是Python语言的基石。 而支持矩阵运算的基础语言包就是Numpy。 参考链接&#xff1a; Python中Numpy的使用_numpy在python中的用法-CSDN博客 这篇博客介绍的numpy比我的这篇博客介绍的更加的详细。本博客只是根据本人 的实际应用&#xff0c;对最关键的…

【GEE代码实例教程详解:NDVI时间序列趋势分析】

GEE&#xff08;Google Earth Engine&#xff09;是一个强大的云计算平台&#xff0c;用于处理和分析大规模地球科学数据集。以下是一个关于如何使用GEE进行NDVI&#xff08;归一化植被指数&#xff09;时间序列趋势分析的详细教程。 一、引言 NDVI时间序列趋势分析是一种统计…

【Hadoop|MapReduce篇】MapReduce概述

1. MapReduce定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上。 2. Map…

统计进程的CPU和内存占用(最大,均值,90分位)

本文先通过top采集所有进程的CPU和内存情况并保存到文件&#xff0c;然后提取指定进程的数据&#xff0c;最后通过 python 对采集的数据进行可视化。 一、使用脚本采集top数据 1. 单次top输出如下 2. 编写脚本每隔1秒采集一次top数据保存到文件 #!/bin/bash# 按照年月日十分…

v0.dev快速开发

探索v0.dev&#xff1a;次世代开发者之利器 今之技艺日新月异&#xff0c;开发者之工具亦随之进步不辍。v0.dev者&#xff0c;新兴之开发者利器也&#xff0c;迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势&#xff0c;助汝速速上手&#xff0c;提升开发之…

【数学建模国赛思路预约】2024全国大学生数学建模竞赛助攻思路、代码、论文

2024年全国大学生数学建模大赛马上就要开始了&#xff0c;大家有没有准备好呢&#xff0c;今年将会和之前一样&#xff0c;将会在比赛赛中时期为大家提供比赛各题的相关解题思路、可运行代码参考以及成品论文。 一、分享计划表如下所示 1、 赛中分享内容包括&#xff08;2023国…

关于 ubuntu系统install的cmake版本较低无法编译项目升级其版本 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141933927 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能&#xff0c;而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中&#xff0c;经常要周期性的执⾏某些…