Shell脚本之正则表达式

news2024/11/24 3:09:50

目录

一、正则表达式的介绍

1)正则表达式的组成

2)正则表达式和通配符的区别 

二、基础正则表达式

1)转义字符的运用

将特殊含义的字符转换为普通字符的含义

将普通字符转换为特殊作用的字符

2)基础正则表达式实际应用

查看以xxx为开头  和查看以xxx为结尾的文件内容

匹配单个任意字符或者多个任意字符

匹配列表内容和匹配非列表中的内容

对子表达式进行多次或者限定次数的匹配 

三、拓展正则表达式

1)拓展正则表达式的基本用法 

2)拓展正则表达式的实际运用

四、正则表达式的组合筛查运用

1)按要求匹配输出规定的电话号码

2)按照要求匹配出规定格式的邮箱


一、正则表达式的介绍

1)正则表达式的组成

正则表达式是由普通字符与元字符组成:

  • 普通字符 包括大小写字母、数字、标点符号及一些其他符号

  • 元字符 是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式

2)正则表达式和通配符的区别 

通配符:在Linux中,一般配合find命令用于对文件目录文件名的查找

正则表达式:匹配文件内容,用于精确筛选信息,可以配合grep,egrep,awk,sed命令进行搭配使用,查找时,也比通配符更加精确

二、基础正则表达式

适合awk,sed,grep,egrep等文本工具使用

元字符作用
\转义字符,用于取消特殊符号的含义
^匹配字符串开始的位置
$匹配字符串结束的位置
.匹配除\n之外的任意的单个字符
*匹配前面子表达式0次或者多次
[list]匹配list列表中的一个字符(列表中只要有一个符合即可)
[^list]匹配任意非list列表中的一个字符
\ {n\ }匹配前面的子表达式n次
\ {n,\ }匹配前面的子表达式不少于n次
\ {n,m\ }匹配前面的子表达式n到m次(m必须大于n,不然会报错)

注意:egrep、 awk使用{n}、{n,}、{n, m}匹配时 "{ }" 前不用加" \ " 

1)转义字符的运用

将特殊含义的字符转换为普通字符的含义

被转义的特殊字符转义前的含义作用
\ =具有赋值的作用,或则进行字符判断
\ !有取反的作用(除了。。。。)
\ &单个&符可以将命令挂在后台上,两个是逻辑符号且的作用
\ $取值变量的作用

将普通字符转换为特殊作用的字符

被赋予新含义的普通字符现在拥有的作用
\n拥有换行的作用
\t转化为制表符(能让输出结果呈现表格的格式)
\w(小写)匹配包括下划线的任何单词字符
\W(大写)匹配任何非单词字符。等通于"[^A-Za-z0-9_]"
\r转换后是回车符
\d匹配一个数字字符
\D匹配一个非数字字符。等价于[^0-9]
\s(小写)空白符
\S(大写)非空白符

2)基础正则表达式实际应用

查看以xxx为开头  和查看以xxx为结尾的文件内容

[root@localhost tr]#grep '^1' math.txt
 
[root@localhost tr]#grep '3$' math.txt 

匹配单个任意字符或者多个任意字符

[root@localhost tr]#grep 'g.d' english.txt 
 
[root@localhost tr]#grep 'g.*d' english.txt 

匹配列表内容和匹配非列表中的内容

[root@localhost tr]#head -n10 /etc/passwd |grep '[root]'
 
[root@localhost tr]#head -n10 /etc/passwd |grep '[^root]'

对子表达式进行多次或者限定次数的匹配 

[root@localhost tr]#grep "go\{1\}" english.txt 

[root@localhost tr]#egrep "go{2,}"  english.txt 

[root@localhost tr]#egrep "go{5,8}"  english.txt 

三、拓展正则表达式

1)拓展正则表达式的基本用法 

支持awk和egrep使用,如果grep和sed想要正常使用(grep -E  sed -r)

元字符作用含义
+匹配前面子表达式1次及以上
匹配前面子表达式0次或者1次
()将括号中的字符串作为一个整体
|以"或"的方式匹配字符串

2)拓展正则表达式的实际运用

[root@localhost tr]#egrep 'go+d'  english.txt 
 
[root@localhost tr]#egrep 'go?d'  english.txt 
 
[root@localhost tr]#egrep '(good)'  english.txt 
 
[root@localhost tr]#egrep 'good|fgod'  english.txt 

四、正则表达式的组合筛查运用

1)按要求匹配输出规定的电话号码

 匹配要求:

  1. 匹配 025 开头的区号
  2. 区号与后面的号码以"-"或则空格或则没有
  3. 电话号码要5 或者 8开头的八位数
[root@localhost ~]#egrep "^(025)[- ]?[58][0-9]{7}$" phone.txt 

2)按照要求匹配出规定格式的邮箱

匹配要求:

  1. 用户名@的长度为6-18位,任意大小写的英文字母,任意数字,除了@和空格以外的任意符号,开头只能是_或者英文字母
  2. 子域名(二级域):任意长度,符号只能使用"-"或者"_"或者"."
  3. 顶级域:长度位2-5,任意大小写的英文
[root@localhost ~]# cat 2.txt | grep -P "^[\w\D][^@ ]{5,17}[@][\w-\.]+[\.][\w\D]{2,5}$"

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

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

相关文章

C++ | 结构体及大小计算

C结构体及大小计算 文章目录 C结构体及大小计算struct 和 class 区别字节对齐默认对齐方式 位域使用#pragma pack(n)结构体中有结构体Reference struct 和 class 区别 结构体(struct)和类(class)有点像,均是定义一个数…

Activi7工作流经典实战(附:常用流程流转代码片段)

一、Activiti7介绍 Activiti正是目前使用最为广泛的开源工作流引擎。Activiti的官网地址是 https:// www.activiti.org 历经6.x和5.x两个大的版本。 1. Activiti工作流引擎 他可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义。业务流…

彻底搞清楚Handler,再也不怕面试官

Handler Handler可以说是Android框架里面很精髓的一部分了,面试必问,用的也最多 Handler是什么? 提到Handler大家一定不陌生,我们经常用它来切换线程,或者是说做一些延时任务等等。最常用的地方可能就是在网络请求中…

Flask全栈解决小问题系列(1)搭建一个bootstrap开发框架

时间不多,闲话少说,实践出真知! 1.目的:为实现FlaskBootStrap开发效果,搞个开发测试项目 2.搭建项目 1)建个test-bootstrap项目,项目目录结构如下: 2)appstart.py内容如下: import json from flask import Flask,redirect,render_templateapp Flask("__main__") …

00后太卷了上班还没3年,跳到我们公司起薪18k....

都说00后已经躺平了,但是有一说一,该卷的还是卷。前段时间我们部门就来了个00后,工作都还没三年,跳到我们公司起薪18K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。最近和他…

Yolov5/Yolov7改进:小目标到大目标一网打尽,轻骨干重Neck的轻量级目标检测器GiraffeDet

1.GiraffeDet介绍 论文:https://arxiv.org/abs/2202.04256 🏆🏆🏆🏆🏆🏆Yolov5/Yolov7魔术师🏆🏆🏆🏆🏆🏆 ✨✨✨魔改网络、复现前沿论文,组合优化创新 🚀🚀🚀小目标、遮挡物、难样本性能提升 🍉🍉🍉定期更新不同数据集涨点情况 本文是…

gitlab上传大文件限制问题解决

gitlab上传大文件限制问题解决 前景提要: 今天收到同事反馈遇到gitlab 上传大文件时候报如下错误 error: RPC failed; result22, HTTP code 413 fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly从报错来看是因为文件大…

什么样的冷链保温箱,既环保又实用?

冷链物流运输已经应用在了很多行业中,作为冷链物流运输中的重要设备——冷链保温箱,起到了举足轻重的作用。如果选择不当,选到了劣质产品,尤其是化学行业或者食品行业,就有可能造成试剂失效或者是影响粮食食品安全问题…

2023英码科技激发团队活力,提升集体凝聚力团建拓展之旅圆满结束!

5月6日,时至立夏,风暖昼长,万物繁茂。 在这个生机盎然、活力四射的时节, 尤其适合出游,开展有益身心健康的活动。 这一天,英码科技全体家人们齐聚广州白云区钟落潭,开展一天好玩有趣又意义深…

SVN基本操作 使用教程

01-SVN概述 1、为什么需要SVN版本控制软件 2、解决之道 SCM:软件配置管理 所谓的软件配置管理实际就是对软件源代码进行控制与管理 CVS:元老级产品 VSS:入门级产品 ClearCase:IBM公司提供技术支持,中坚级产品 SVN&…

C++类与对象(三)

文章目录 一.初始化列表1.初始化列表的概念2.初始化列表的注意事项 二.explicit关键字1.单参数构造函数2.多参数构造函数 三.static成员1.static成员的概念2.static成员的特性 四.友元1.概念2.友元函数3.友元类 五.内部类1.概念2.内部类的性质 六.匿名对象七.拷贝对象时编译器的…

Docker安装MySQL主从配置

今天学习Docker安装MySQL主从配置 一、Master 1.1、拉取镜像 $docker pull mysql:8.0.25 1. 2、新建MySQL主服务器的容器实例,端口为3306 docker run -p 3306:3306 --name mysql-master \ -v /data/mysql/mysql-master/log:/var/log/mysql \ -v /data/mysql/mys…

WebSocket聊天功能小Demo

一、WebSocket简介 1.1 什么是WebSocket? WebSocket协议是基于TCP的一种网络协议,它实现了浏览器与服务器全双工(Full-duplex)通信。它允许服务端主动向客户端推送数据,这使得客户端和服务器之间的数据交换变得更加简…

模型微调的预处理

一.简历文本标注数据的准备 目标:把原始数据集转换为PaddleNLP支持的文本/文档抽取标注格式,为后续的模型微调做好准备。 工具:Label Studio 使用手册: applications/information_extraction/label_studio_text.md PaddlePad…

ai原创文章生成器-原创文章生成的软件

AI原创文章生成器——让你轻松批量生成高质量文章 随着内容创作的需求不断增加,人工撰写也难以满足快速高效的产出需求。在这种情况下,AI原创文章生成器应运而生,为人们创造了一种全新的自动化创作方式。下面我们就来了解一下这个神奇的工具…

无网络要求有网就能免费体验ChatGPT/GPT4

ChatGPT 是 OpenAI 公司开发的一款聊天机器人。它基于 OpenAI 的 GPT-3 语言模型,可以进行开域的自然语言聊天。主要特点如下: 开域聊天:ChatGPT可以聊任意话题,不需要预先定义话题范围或关键词,真正实现开放领域聊天。自然语言交互:ChatGPT可以理解并生成自然的语言表达,其对…

[答疑]事件和其影响的属性的对应是多样的

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 第五元素 2023-5-2 19:16 这题是不是缺少条件啊?“按钮默认isEnabled为true,被点击后,isEnabled变为false” 是通过什么渠道达到S4状态…

视频截取gif方法分享,利用gif制作工具在线制作动图

表情包作为聊天社交中调节氛围的工具,而动态的gif表情包更是深受大众的喜爱。那么,这种gif动态图片要怎么制作呢?其实,很简单不需要下载软件,小白也能轻松操作的。 一、什么工具能够制作gif动画呢? 使用G…

freeswitch两个DTMF转换接口的区别

概述 freeswitch支持三种模式的DTMF传输方式,分别时inband、INFO、2833。 在传统的PSTN网络中,所有的DTMF码都是inband模式,所以VOIP网络和PSTN网络对接中,需要将DTMF码做格式转换,通常是2833和inband之间的转换。 …

普乐蛙数字文旅动感5d电影设备5d动感电影体验馆

普乐蛙5d动感影院7d互动影院设备,它是通过视觉、听觉、触觉、嗅觉和味觉,在特定的环境中模拟形成一种特定的空间,营造出身临其境的效果。普乐蛙5d动感影院7d互动影院设备,它是根据人体工程学设计的座椅,让观众坐在座椅…