Linux:Shell编程之正则表达式

目录

绪论

1、正则表达式

1.1 通配符

1.2 正则表达式分类

1.3 基本正则

1.4 正则表达式中表示次数的表达式

1.5 位置锚定

1.5.1 词首锚定和词尾锚定

1.6 分组()

1.7  逻辑或

1.8 扩展正则


绪论

正则表达式:有一类特殊字符以及文本字符所编写的一种模式,用来处理文本当中的内容,其中的一些字符不表示字符的字面含义,表示控制或者通配的功能

通配符:只能匹配文件名与目录名,不能匹配文件的内容

1、正则表达式

1.1 通配符

只能匹配文件名与目录名,不能匹配文件的内容

*匹配任意一个或者多个字符
touch  1.txt  2.txt  3.txt
ls *.txt?匹配任意一个字符(就是匹配单个字符)
ls ?.txt[ ] 匹配范围内的任意单个字符
touch {a..z}.txt
ls [a-n].txt

1.2 正则表达式分类

· 基本正则表达式

· 扩展正则表达式 

1.3 基本正则

字符匹配,元字符

. 匹配任意的单个字符,可以是一个汉字,\表示转义符,\.就是一个点 

eg:ls  |  grep  "12."  输出为123.txt

"()括号表示分组的意思",\(\)就是括号

eg:"[]"匹配指定范围内的任意单个字符

ls  |  grep  "[0-9]"

eg:大小写和数字一起匹配

ls  |  grep  "[0-9A-Za-z]"

eg:"[^]"取反,指定范围之外的

ls  |  grep  "[^A-Z]"

[[:space:]]包含空格,tab键,换行的空格,回车的空格

[[:blank:]] 空白字符(空格和tab制表符)

eg:以rc开头的任意单个字符0-6的数字

ls  /etc  |  grep  "rc[0-6]"

eg:只匹配以rc开头的文件,.不是正则

ls  /etc  |  grep  "rc\."

通配符不能完全匹配大小写, 正则可以

1.4 正则表达式中表示次数的表达式

" * "匹配前面的字符任意次,0次也行,无数次也行,有多少匹配多少(贪婪模式),没有也行

eg:

echo  goole  |  grep  "go*gle"  输出为google

echo  ggle  |  grep  "go*gle"  输出为ggle

" .* "匹配任意长度的字符,至少要有一次,不包括0次

eg:

echo  goole  |  grep  "go.*gle"  输出为google

echo  ggle  |  grep  "go.*gle"  此时匹配不到

" \?"匹配前面的字符0次或者一次,可有可无

" \+ " 匹配前面的字符至少1次,最多可以无数次

eg:

echo  ggle  |  grep  "go\+gle"

\{n\}匹配前面的字符等于n次,必须连续出现才能匹配

eg:echo  gogle  |  grep  "go\{|\}gle"

\{m,n\}匹配前面的字符,最少m次,最多n次

\{,n\}匹配前面的字符,最多n次(只要出现几次,出现都算,除非没有,只要前面的字符有,都算)

eg:echo  ggle  |  grep  "go\{,3}gle"

\{n,\}匹配前面的字符至少n次

1.5 位置锚定

^ 以什么为开头,在模式的左侧  

eg:cat  /etc/passwd  |  grep  "^root"

$ 以什么为结尾,在模式的右侧 r$表示以r为结尾

^root$ 用于匹配整行,而且整行中只有以后个root

^$ / ^[[:space:]]$  匹配空行

1.5.1 词首锚定和词尾锚定

词首锚定 \< 或者 \b

词尾锚定 \> 或者 \b   

根据\b的前后位置判断

eg:echo  hello-123  |  grep  "123\b"

输出为标红的hello-123

echo  hello-123  |  grep  "\bhello"

输出为标红的hello-123

\<root\> 表示匹配整个单词

1.6 分组()

echo  abccc  |  grep  "abc\{3\}"

输出为abccc

\{n\}表示正好出现n次,n次表示前面的字符必须要连续出现才能匹配

\{,n}只要你出现几次都算,除非没有

eg:echo  golgogle  |  grep  "\(go  \)\{}\}gle"

输出为gogle

\(go\)是一个租,连续的go只出现一个,两个不连续的go都出现

1.7  逻辑或

\|:斜杠管道符表示逻辑或

echo  | abc2abc  |  grep  "(1\|2\)abc"

1.8 扩展正则

不用写斜杠了

需要使用grep  -E 或者egrep

echo  1abc2abc  |  grep  -E  "(1|2)abc"

匹配邮箱号码  :

vim  /opt/pipei.txt

cat  pipei.txt  |  grep  -E "[0-9a-z]{9,11}@[0-9a-z]{2,3}\.[a-z]{2,3} 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET对象的内存布局

在.NET中&#xff0c;理解对象的内存布局是非常重要的&#xff0c;这将帮助我们更好地理解.NET的运行机制和优化代码&#xff0c;本文将介绍.NET中的对象内存布局。 .NET中的数据类型主要分为两类&#xff0c;值类型和引用类型。值类型包括了基本类型(如int、bool、double、cha…

SQL server 与 MySQL count函数、以及sum、avg 是否包含 为null的值

sql server 与 mysql count 作用一样。 count 计算指定字段出现的个数&#xff0c; 不是计算 null的值 获取表的条数 count(n) n:常数 count(1),count&#xff08;0&#xff09;等 count(*) count(字段) 其中字段为null 不会统计在内。 avg(字段)、sum(字段) 跟count(字段)…

VS Code 使用cnpm下载包失败

一、 问题如下&#xff1a; 网上找到的解决方法是要在powershell中执行&#xff1a; Set-ExecutionPolicy RemoteSigned进行更改策略。 首先我们解释下这个Set-ExecutionPolicy RemoteSigned&#xff0c;Set-ExecutionPolicy 是一个 PowerShell 命令&#xff0c;用于控制脚本…

火车头采集伪原创插件【php源码】

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python代码大全和用法&#xff0c;python代码大全简单&#xff0c;现在让我们一起来看看吧&#xff01; 火车头采集ai伪原创插件截图&#xff1a; 1、题目&#xff1a;列表转换为字典。 程序源代码&#xff1a; 1 #!/us…

Dynamo_关于参数赋值

写写关于Dynamo参数赋值 为单个对象赋单个参数值 最容易理解&#xff0c;SetParameterByName需要输入三个参数&#xff0c;元素对象&#xff08;数据类型&#xff1a;Element&#xff09;&#xff0c;参数名称&#xff08;数据类型&#xff1a;String&#xff09;&#xff0c;…

【JAVA基础】- 同步非阻塞模式NIO详解

【JAVA基础】- 同步非阻塞模式NIO详解 文章目录 【JAVA基础】- 同步非阻塞模式NIO详解一、概述二、常用概念三、NIO的实现原理四、NIO代码实现客户端实现服务端实现 五、同步非阻塞NIO总结 一、概述 NIO&#xff08;Non-Blocking IO&#xff09;是同步非阻塞方式来处理IO数据。…

【ChatGPT 指令大全】怎么使用ChatGPT辅助程式开发

目录 写程式 解读程式码 重构程式码 解 bug 写测试 写 Regex 总结 在当今快节奏的数字化世界中&#xff0c;程式开发变得越来越重要和普遍。无论是开发应用程序、网站还是其他软件&#xff0c;程式开发的需求都在不断增长。然而&#xff0c;有时候我们可能会遇到各种问题…

PCL 计算外接圆的半径

目录 一、算法原理1、计算公式2、主要函数3、源码解析二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。爬虫自重。 一、算法原理 1、计算公式

【毕业项目】自主设计HTTP

博客介绍&#xff1a;运用之前学过的各种知识 自己独立做出一个HTTP服务器 自主设计WEB服务器 背景目标描述技术特点项目定位开发环境WWW介绍 网络协议栈介绍网络协议栈整体网络协议栈细节与http相关的重要协议 HTTP背景知识补充特点uri & url & urn网址url HTTP请求和…

springboot家政服务管理系统java家务保姆资源 jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 springboot家政服务管理系统 系统1权限&#xff1a;管…

C# PDF加盖电子章

winform界面 1.选择加签pdf按钮代码实现 private void button1_Click(object sender, EventArgs e){OpenFileDialog op new OpenFileDialog();op.Filter "PDF文件(*.pdf)|*.pdf";bool flag op.ShowDialog() DialogResult.OK;if (flag){string pdfPath Path.Get…

c语言进阶部分详解(数据在内存中的存储)

大家好&#xff0c;今天要进行梳理的内容是数据在内存中的存储相关内容。 在C语言中&#xff0c;数据在内存中的存储是一个非常重要的概念。了解数据在内存中的存储方式可以帮助我们更好地理解程序的执行过程&#xff0c;优化内存使用&#xff0c;提高程序的性能。 目录 一.数…

《论文阅读13》Efficient Urban-scale Point Clouds Segmentationwith BEV Projection

一、论文 研究领域&#xff1a; 城市级3D语义分割论文&#xff1a;Efficient Urban-scale Point Clouds Segmentationwith BEV Projection论文链接 注&#xff1a; BEV&#xff1a; Birds Eye View BEV投影是指鸟瞰视角(Birds Eye View,简称BEV)的一种从上方观看对象或场景的…

gin和gorm框架安装

理论上只要这两句命令 go get -u gorm.io/gorm go get -u github.com/gin-gonic/gin然而却出现了问题 貌似是代理问题&#xff0c;加上一条命令 go env -w GOPROXYhttps://goproxy.cn,direct 可以成功安装 安装gorm的数据库驱动程序 go get -u gorm.io/driver/mysql

go错误集(持续更新)

1.提示以下报错 Build Error: go build -o c:\Users\Administrator\Desktop__debug_bin2343731882.exe -gcflags all-N -l . go: go.mod file not found in current directory or any parent directory; see ‘go help modules’ (exit status 1) 解决办法&#xff1a; go …

AJAX-笔记(持续更新中)

文章目录 Day1 Ajax入门1.AJAX概念和axios的使用2. 认识URL3.URL的查询参数4.常用的请求方法和数据提交5.HTTP协议-报文6.接口文档7.form-serialize插件8.案例用户登录 Day2 Ajax综合案bootstrap弹框图书管理图片上传更换背景个人信息设置 Day3 AJAX原理XMLHttpRequestPromise封…

机器学习笔记:李宏毅ChatGPT:生成式学习的两种策略

1 策略1 “各个击破”——autoregressive model “各个击破”——一个一个生成出来 2 策略2 &#xff1a; “一次到位”——non-autoregressve model 一步到位&#xff0c;全部生成出来 2.1 non-autoregressive model 如何确定长度&#xff1f; 两种策略 策略1&#xff1a;始…

【1572. 矩阵对角线元素的和】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&#xff1a; 输入&#xff1a;mat [[1,2,3]…

MATLAB | 绘图复刻(十一) | 截断的含散点及误差棒的分组柱状图

hey大家好久不见&#xff0c;本期带来一篇绘图复刻&#xff0c;居然已经出到第11篇了&#xff0c;不知道有朝一日有没有机会破百&#xff0c;本期绘制的是《PNAS》期刊中pnas.2200057120文章的figure03&#xff0c;文章题目为Intranasal delivery of full-length anti-Nogo-A a…

数据库新闻速递 -- POSTGRESQL 正在蚕食数据库市场 (翻译)

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请加 liuaustin3微信号 &#xff0c;在新加的朋友会分到3群&#xff…