shell编程--正则表达式

news2024/9/23 23:34:34

正则表达式

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

示例

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

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

表示必须输入数字

#!/bin/bash

while :
do
read -p "输入数字:" num
    if [[ $num =~ ^[0-9]+$ ]]
        then
            echo "再见"
            exit
        else
            echo "重新输入"
    fi
done
#!/bin/bash
read -p "你好,请输入姓名:" name

while :
do
read -p "你是傻子吗,请输入 是:" num
    if [ $num = "是"]
        then
            echo "大傻子,$name,再见"
            exit
        else
            echo "重新输入"
    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.txt

ab
abc
abcd
abcde
abcdef

#ab后面好想有c,好像也没有,c出现0次到多次

grep "abcde*" 1.txt

abcd
abcde
abcdef

#e出现0次到多次
.* 任意多个字符
grep ".*" 1.txt

a
ab
abc
abcd
abcde
abcdef
gg
hh
ii

###################################
为什么*.不可以
*前面没有前导符
[ ] 匹配指定范围内的一个字符
vim 1.txt
love
Love
1love
|ove


#################################################
grep "[lL]ove" 1.txt

love
Love

#取反
grep "[^lL1]ove" 1.txt
|ove


grep "[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.3



192.168.2.2



:% s/\(192\)/123\1/
#在192前面加123
x\{m\}  字符x重复几次
love
loove
looove
loooove
looooove
loooooove



grep "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
loveyou


grep "\<love" 1.txt
loveyou
eee loveyou fff



grep "love$" 1.txt
ilove

grep "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
lovers

egrep "loveable|rs" 1.txt
rs
loveable
lovers

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2099696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot整合logback进行日志管理(下篇)

上一篇介绍了springboot整合logback的一些项目中用到的经验&#xff0c;本片文章继续介绍在项目中实际用到的工程经验 1、设想一下有这样一个场景&#xff1a;我想把我所有service层的日志单独打印到service.log中&#xff0c;那应该怎么做&#xff1f; 有人会说了可以配置一…

高收录高权重的采集站源码——码山侠

前端预览&#xff1a;i5i.net——码山侠点击看看 采集非常简单&#xff0c;不伪原创&#xff0c;也不处理种种外链&#xff0c;也不需要什么配图&#xff0c;而且结构也不复杂。 后台管理&#xff1a; 文章发布手动发布及编辑管理后台 采集以及伪原创类工具后台&#xff1a; …

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习 PySpark

毕业设计题目基于 Hadoop 的共享单车布局规划 二、毕业设计背景 公共交通工具的“最后一公里”是城市居民出行采用公共交通出行的主要障碍&#xff0c;也是建设绿色城市、低碳城市过程中面临的主要挑战。 共享单车&#xff08;自行车&#xff09;企业通过在校园、地铁站点、公…

光储充微电网能量管理系统控制策略研究及并网分析

引言 近年来&#xff0c;我国日益重视分布式能源和微电网的发展&#xff0c;特别是光伏系统和储能技术的应用&#xff0c;这些已成为确保电力供应可靠性、促进新能源利用和减少污染的关键措施。我国新能源领域的专家对光伏储能控制系统进行了深入研究&#xff0c;强调了其应用…

【Qt】 QComboBox | QSpinBox

文章目录 QComboBox —— 下拉框QComboBox 属性核心方法核心信号QComboBox 使用 QSpinBox —— 微调框QSpinBox 属性核心信号QSpinBox 使用 QComboBox —— 下拉框 QComboBox 属性 QComboBox —— 表示下拉框 currentText ——当前选中的文本 currentindex ——当前选中的条…

STM32 ADC采样详解

Content 0x00 前言0x01 ADC配置0x02 滤波处理 0x00 前言 在单片机开发过程中&#xff0c;常常涉及到ADC的使用&#xff0c;市面上大部分便宜的传感器都是采用的ADC来获取其数据&#xff0c;如MQ-2 烟雾传感器、光敏传感器等等。 此类传感器工作原理为根据所采集到的数据变化…

Axure健康助理小程序原型图70+页,医疗类高保真高交互模板

作品概况 页面数量&#xff1a;共 70 页 源文件格式&#xff1a;限 Axure RP 9/10&#xff0c;非app软件无源码 适用领域&#xff1a;医疗健康、健康助理 作品特色 本作品为健康助理小程序的Axure原型设计图&#xff0c;属于医疗健康项目&#xff0c;设计规范内容清晰&#…

坐牢第三十三天(手搓string)

一.mystring类 #include <iostream> #include <cstring> // 引入cstring以使用memcpy using namespace std; class myString {char *str; // 记录c风格的字符串int size; // 记录字符串的实际长度int my_capacity; // 记录最大容量 public:// 无参构…

LACP链路聚合

链路聚合包含两种模式&#xff1a;手动负载均衡模式和LACP&#xff08;Link AggregationControl Protocol&#xff09;模式。 手工负载分担模式&#xff1a;Eth-Trunk的建立、成员接口的加入由手工配置&#xff0c;没有链路聚合控制协议的参与。该模式下所有活动链路都参与数…

嵌入式软件--51单片机 DAY 2

一、数码管 1.数码管概况 2.设计 &#xff08;1&#xff09;硬件设计 我们可以通过阴极控制显示的位置&#xff0c;通过阳极控制显示的内容。两个数码管共有8个阴极引脚和16和阳极引脚&#xff0c;如果所有引脚都直接接入MCU&#xff0c;会造成MCU引脚的极大浪费。 为了节省…

Java编程基础-类加载机制

文章目录 基本概念类加载器的层次结构类的加载过程双亲委派模型自定义类加载器注意事项 Java 类加载器&#xff08;Class Loader&#xff09;是 Java 运行时环境的一部分&#xff0c;它负责在应用程序运行时加载类和接口的字节码。类加载器对于 Java 的动态特性和安全性有着至关…

Microsoft DirectML 现在支持 Copilot+ PC 和 WebNN

DirectML 是一个底层应用程序接口&#xff0c;使开发人员能够在任何兼容 DirectX 12 的 AMD、英特尔和英伟达&#xff08;NVIDIA&#xff09;GPU 上运行机器学习工作负载 。它首次出现在Windows 10 的 1903 版本中。最近&#xff0c;微软 开始在 DirectML 中支持现代 SoC 中的N…

新能源汽车超级电容和电池能量管理系统的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 电池模型 4.2 电池荷电状态&#xff08;SOC&#xff09;估算 4.3 超级电容器模型 4.4 能量管理 5.完整工程文件 1.课题概述 新能源汽车的能量管理系统&#xff08;Energy Management System, EMS…

Conda离线部署django

要在没有网络连接的环境中使用conda部署Django&#xff0c;你需要预先在有网络连接的机器上创建一个包含所有必要包的环境&#xff0c;并导出该环境的配置文件。然后&#xff0c;你可以将这个配置文件和必要的包传输到目标机器上进行安装。 下面是详细的步骤&#xff1a; 1. …

mysql优化案例分享

一、mysql介绍 1、InnoDB引擎 mysql5.5.8版本开始后。InnoDB引擎就是默认存储引擎&#xff0c;本文介绍知识点也都是围绕该引擎展开。 知识点1聚集存储 InnoDB引擎采用聚集存储&#xff0c;即每张表的存储都是主键的顺序进行存放&#xff0c;也就是每行存储的物理顺序和主键…

基于SparkGraphX实现带权重的PageRank算法

基于SparkGraphX实现带权重的PageRank算法 文章目录 基于SparkGraphX实现带权重的PageRank算法一、什么是PageRank算法二、PageRank算法的实现三、PagRank算法实现步骤四、大数据量的PageRank算法实现总结 一、什么是PageRank算法 网页排序算法之PageRank 二、PageRank算法的…

【AI视频】Runway注册、基本设置、主界面详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 &#x1f4af;前言&#x1f4af;Runway的正确启动方式推荐使用Google Chrome打开Chrome翻译 &#x1f4af;Runway的注册&#x1f4af;My Account&#xff08;我的账户&#xff09;General&#xff08;常…

HTTPie CLI:重塑命令行HTTP交互的现代工具

更多内容前往个人网站&#xff1a;孔乙己大叔 在快速发展的数字时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为连接不同服务和应用的桥梁。无论是开发者还是系统管理员&#xff0c;与HTTP服务进行有效且高效的交互都是日常工作的核心部分。然而&#xff0…

idea中git提交或push到远程后回退到之前的某次提交简单有效的解决方案

场景&#xff1a; 1、先模拟出团队多人开发多分支&#xff0c;在各个分支分别提交代码&#xff0c;然后都合并到master分支 2、模拟如下两个分支dev、dev-0902合并到master&#xff0c;并且合并master后push到远程了 3、假如更新版本计划有变&#xff0c;只上dev-0902分支&…

stm32之I2C通信外设

系列文章目录 1. stm32之I2C通信协议 2. stm32之软件I2C读写MPU6050陀螺仪、加速度传感器应用案例 3. stm32之硬件I2C读写MPU6050陀螺仪、加速度传感器应用案例 文章目录 系列文章目录前言一、I2C通信外设1.1 I2C外设简介1.2 软件模拟和硬件外设对比 二、I2C外设电路结构2.1 I…