Linux:shell脚本:基础使用(4)《正则表达式-grep工具》
正则表达式定义:
使用单个字符串来描述,匹配一系列符合某个句法规则的字符串
正则表达式的组成:
普通字符串: 大小写字母,数字,标点符号及一些其他符号
元字符:在正则表达式中具有特殊意义的专用字符
正则表达式不能单独使用,需要配合一些命令 如 grep sed 等命令
正则表达式
我们先创建一个文件用于测试
he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the li
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words#woood #
#woooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.
以上字符是我准备的一个文件的内容,等会我们用grep命令使用正则表达式去检索内容
文件名称无所谓,我的叫tarro.txt
grep
我们使用grep查询里面某一个指定的字符串 the
grep 'the' tarro.txt
里面每行带有the字符串的就出来了
如果想知道我们查找的字符串在第几行
grep -n 'the' tarro.txt
前面的数字就是在文件里的行,也就是这段在文件中的几行几行
如果想知道在文件中第几行,并且不区分大小写,也就是我们指定的字符串无论大小写都展示出来
grep -in 'the' tarro.txt
这样我们查找出来的就不区分大小写了,即使我们查的是小写the,加了-i 那么大写小写都会有
如果正好相反我们不想查包含指定字符串的行
grep -nv 'the' tarro.txt
-v就是反向查找,我们后面指定的字符串就反过来,就查找不带他们的行,反向查找不包含the的行
利用中括号[]来查找集合字符
[] ---里面无论有几个字符,都仅代表一个字符,为‘或’关系
[^] --- 括号里面的‘^’是取反的意思
查找包含shirt 或short的行
grep -n 'sh[io]rt' tarro.txt
可以看到他们中级的字符不一样,我们使用了查找 以sh 开通 rt结尾,中间o或者i 两个就全出来了
查找重复单个字符‘oo’的行
grep -n 'oo' test.txt
里面只要是两个oo相连的字符串就被查询出来了
查找‘oo’前不是‘w’的行
grep -n '[^w]oo' tarro.txt
去掉了w开头的,那为什么#woood # 和 #woooooood # 没被去掉,因为他们相连的字符串是以#开头的,你可以和上一个比对一下
查找‘oo’前不是小写字母的行
grep -n '[^a-z]oo' tarro.txt
现在前面小写的a-z开通的都被去掉了,F是大写的所以还在
查找‘oo’前不是大写字母的行
grep -n '[^A-Z]oo' tarro.txt
刚刚那个F开头的就没了,就剩下一些小写开头的行了
查找包含数字的行
grep -n '[0-9]' tarro.txt
上图只要是行内带有数字的行就被查出来了
查找行首^与行尾字符$
小数点‘.’在正则表达式中为元字符,需要使用转义字符‘\’将其转化为普通字符
查找以小数点‘.’结尾的行。
grep -n '\.$' tarro.txt
查找空行
grep -n '^$' test.txt
查找以‘w’开头,‘d’结尾共4个字符的行
grep -n 'w..d' tarro.txt
查询至少包含两个o以上的字符串
grep -n 'ooo*' tarro.txt
查找以‘w’开头,中间至少包含一个‘o'的,‘d’结尾的行
grep -n 'woo*d' tarro.txt
查找以‘w’开头,‘d’结尾 中间字符可有可无 的行
grep -n 'w.*d' test.txt
查询任意数字的行
grep -n '[0-9][0-9]*' test.txt
查找连续字符范围{}
使用'.' 和'*'可以设置零个或无限多个重复的字符
如果要限制一个范围则使用‘{}’
查看2个o的字符
grep -n 'o\{2\}' test.txt
查看w开头,d结尾,中间为2-5个o的字符串
grep -n 'wo\{2,5\}d' test.txt
查看w开头,d结尾,中间为2以上o的字符串
grep -n 'wo\{2,\}d' test.txt
基础正则表达式的常见元字符
\b 单词的开头或结尾,只匹配一个位置,不匹配分隔标点符号和空格 \bHello\b
\d 一个数字,等价于 [0-9] 0\d\d-\d{8} 固定电话
* 数量,它前面的内容以连续使用的任意次数以达到整个表达式匹配,可以是0次匹配 .*
+ 和* 类似,但至少匹配1次, 匹配一个或多个 \d+
? 和上面两个类似,重复0次或一次
. 匹配除了换行符以外任意字符
\s 匹配任意的空白符、制表符、换行符、中文全角空格等
\w 匹配字母、数字、汉字或者下划线
^ 用来查找的字符串的开头 ^\d{5,12}$ 5~12位的QQ
$ 用来查找的字符串的结尾
{n} 前面必须连续重复匹配n次,\d{8} \bw{6}\b 刚好6个字符的单词
{n,m} 前面必须连续重复匹配n~m次,
{n,} 前面必须连续重复匹配n~更多次,
\ 如果需要查找元字符,需要转义
[] 里面的字符可以不用转义,用来定义匹配集合 [?.*()]3.扩展正则表达式----egrep、awk命令支持
3.1 扩展正则表达式的常见元字符
+ 重复一个或者一个以上的前一个字符? 零个或者一个的前一个字符
| 使用或者(or)的方式找出多个字符
() 查找“组”字符串
()+ 辨别多个重复的组
相关文章:

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》
正则表达式定义: 使用单个字符串来描述,匹配一系列符合某个句法规则的字符串 正则表达式的组成: 普通字符串: 大小写字母,数字,标点符号及一些其他符号 元字符:在正则表达式中具有特殊意义的专用字符 正则表…...
如何建立单元测试
快速开始 zixun-quickstart-mk3生成的项目已经配置好了基础的BaseTest,各个测试类只需要继承BaseTest就可以开始进行单元测试的编写了。 如何进行Mock 为了保证独立性和可重复执行,所有的外部依赖都需要进行Mock,SpringTest引入了Mockito作为单测Mock组件, Mickito官方文…...
typeScript 接口和类
工具: PlayGround 接口 接口用来定义对象的结构和类型,描述对象应该具有哪些属性和方法。 它仅用于声明,而不是实现; 这对于编写可重用的代码非常有用。它可用于: 关键字是interface, 注意:它…...

这项与越来越多企业有关的行业标准,网易云信深度参与制定!
近日,由中国信息通信研究院主办的 2023 数字生态发展大会暨中国信通院“铸基计划”年中会议在北京召开。本次大会发布了中国信通院在行业数字化转型中的观察和实践,并发布了中国信通院在数字化转型领域的多项工作成果。大会定向邀请了来自通信、云计算、…...
C语言,malloc使用规范
malloc 是 C 语言中用于分配内存的函数。它的名称是“memory allocation”的缩写。malloc 是在 <stdlib.h> 头文件中定义的。 malloc 的基本语法是: void* malloc(size_t size); 其中 size_t是要分配的字节数。如果分配成功,malloc返回一个指向分配…...

广度优先遍历与最短路径(Java 实例代码源码包下载)
目录 广度优先遍历与最短路径 Java 实例代码 src/runoob/graph/ShortestPath.java 文件代码: 广度优先遍历与最短路径 广度优先遍历从某个顶点 v 出发,首先访问这个结点,并将其标记为已访问过,然后顺序访问结点v的所有未被访问…...
南大通用数据库(Gbase 8s) 创建UDR外部函数
一、在使用 date_format、from_unixtime、to_days、yearweek 函数时,Gbase 8s 数据库不支持,可以使用创建 UDR 外部函数来实现 二、登录命令控制台或者使用 navicat 连接 Gbase 数据库 这里使用 navicat ,点击新增连接选择 PostGreSql 驱动…...

步入React正殿 - State进阶
目录 扩展学习资料 State进阶知识点 状态更新扩展 shouldComponentUpdate PureComponent 为何使用不变数据【保证数据引用不会出错】 单一数据源 /src/App.js /src/components/listItem.jsx 状态提升 /src/components/navbar.jsx /src/components/listPage.jsx src/A…...

【QT+ffmpeg】QT+ffmpeg 环境搭建
1.qt下载地址 download.qt.io/archive/ 2. win10sdk 下载 https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/ 安装 debug工具路径 qtcreater会自动识别 调试器选择...
责任链模式解决多个ifelse问题
责任链定义 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象按照顺序处理请求,直到其中一个对象能够处理该请求为止。 在责任链模式中,通常有一个抽象处理者(Handler&a…...

Lnton羚通关于PyTorch的保存和加载模型基础知识
SAVE AND LOAD THE MODEL (保存和加载模型) PyTorch 模型存储学习到的参数在内部状态字典中,称为 state_dict, 他们的持久化通过 torch.save 方法。 model models.shufflenet_v2_x0_5(pretrainedTrue) torch.save(model, "../../data/ShuffleNetV2_X0.5.pth…...

python+django+mysql项目实践四(信息修改+用户登陆)
python项目实践 环境说明: Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 用户信息修改 修改用户信息需要显示原内容,进行修改 通过url传递编号 urls views 修改内容需要用数据库的更新,用update进行更新,用filter进行选择 输入参数多nid,传递要修…...

sCrypt编程马拉松于8月13日在复旦大学成功举办
继6月在英国Exeter大学成功举办了为期一周的区块链编程马拉松后,美国sCrypt公司创始人兼CEO刘晓晖博士带领核心团队成员王一强、郑宏锋、周全,于8月13日在复旦大学再次成功举办了一场全新的sCrypt编程马拉松。 本次活动由上海可一澈科技有限公司与复旦大…...
Selenium手动和自动两种方式启动Chrome驱动
1. 自动启动chrome驱动(已经安装了Selenium库和Chrome驱动) 要使用Selenium自动跟随自带的Chrome驱动,你需要首先确保你已经安装了Selenium库和Chrome驱动。然后,你可以按照以下步骤进行操作: 导入必要的库: from selenium imp…...
《PostgreSQL 开发指南》第32篇 物化视图
物化视图概述 物化视图(Materialized View)是 PostgreSQL 提供的一个扩展功能,它是介于视图和表之间的一种对象。 物化视图和视图的最大区别是它不仅存储定义中的查询语句,而且可以像表一样存储数据。物化视图和表的最大区别是它…...
【RocketMQ】快速入门
文章目录 消费模式同步消息异步消息单向消息延迟消息批量消息顺序消息事务消息Tag标签和Key键Tag的使用Key的使用 首先引入rocketmq的依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><ve…...

AB跳转轮询:让你的独立站收款智能化
独立站在近两年成为跨境电商的热门布局之一,特别是在亚马逊封号潮后,许多卖家开始转向独立站运营。然而,在迅速发展的同时,也不可避免地出现了一些问题,比如很多卖家的资金经常被不同程度地冻结,好不容易出…...

所有用户都能使用sudo吗
是的,Linux系统中的普通用户可以通过配置访问 sudo 命令来获得超级用户(root)权限的临时访问权。这使得普通用户可以在需要时执行需要管理员权限的操作,而无需永久性地切换到超级用户账户。 通过 sudo 命令,系统管理员…...

【广州华锐视点】VR警务教育实训系统模拟真实场景进行实践训练
随着科技的发展,虚拟现实技术在教育领域得到了广泛的应用。VR警务教育实训系统就是其中的一种应用,该系统由广州华锐互动开发,可以模拟真实的警务场景,让学生通过虚拟现实技术进行实践训练,提高学生的实践能力和技能水…...
【深入浅出C#】章节 7: 文件和输入输出操作:处理文本和二进制数据
文件和输入输出操作在计算机编程中具有重要性,因为它们涉及数据的持久化存储和交互。数据可以是不同类型的,例如文本、图像、音频、视频和二进制数据。这些不同类型的数据具有不同的存储需求。 文本数据是最常见的数据类型之一,用于存储和传输…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...