当前位置: 首页 > news >正文

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 的基本语法是&#xff1a; void* malloc(size_t size); 其中 size_t是要分配的字节数。如果分配成功&#xff0c;malloc返回一个指向分配…...

广度优先遍历与最短路径(Java 实例代码源码包下载)

目录 广度优先遍历与最短路径 Java 实例代码 src/runoob/graph/ShortestPath.java 文件代码&#xff1a; 广度优先遍历与最短路径 广度优先遍历从某个顶点 v 出发&#xff0c;首先访问这个结点&#xff0c;并将其标记为已访问过&#xff0c;然后顺序访问结点v的所有未被访问…...

南大通用数据库(Gbase 8s) 创建UDR外部函数

一、在使用 date_format、from_unixtime、to_days、yearweek 函数时&#xff0c;Gbase 8s 数据库不支持&#xff0c;可以使用创建 UDR 外部函数来实现 二、登录命令控制台或者使用 navicat 连接 Gbase 数据库 这里使用 navicat &#xff0c;点击新增连接选择 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问题

责任链定义 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许多个对象按照顺序处理请求&#xff0c;直到其中一个对象能够处理该请求为止。 在责任链模式中&#xff0c;通常有一个抽象处理者&#xff08;Handler&a…...

Lnton羚通关于PyTorch的保存和加载模型基础知识

SAVE AND LOAD THE MODEL (保存和加载模型) PyTorch 模型存储学习到的参数在内部状态字典中&#xff0c;称为 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大学成功举办了为期一周的区块链编程马拉松后&#xff0c;美国sCrypt公司创始人兼CEO刘晓晖博士带领核心团队成员王一强、郑宏锋、周全&#xff0c;于8月13日在复旦大学再次成功举办了一场全新的sCrypt编程马拉松。 本次活动由上海可一澈科技有限公司与复旦大…...

Selenium手动和自动两种方式启动Chrome驱动

1. 自动启动chrome驱动(已经安装了Selenium库和Chrome驱动) 要使用Selenium自动跟随自带的Chrome驱动&#xff0c;你需要首先确保你已经安装了Selenium库和Chrome驱动。然后&#xff0c;你可以按照以下步骤进行操作&#xff1a; 导入必要的库&#xff1a; from selenium imp…...

《PostgreSQL 开发指南》第32篇 物化视图

物化视图概述 物化视图&#xff08;Materialized View&#xff09;是 PostgreSQL 提供的一个扩展功能&#xff0c;它是介于视图和表之间的一种对象。 物化视图和视图的最大区别是它不仅存储定义中的查询语句&#xff0c;而且可以像表一样存储数据。物化视图和表的最大区别是它…...

【RocketMQ】快速入门

文章目录 消费模式同步消息异步消息单向消息延迟消息批量消息顺序消息事务消息Tag标签和Key键Tag的使用Key的使用 首先引入rocketmq的依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><ve…...

AB跳转轮询:让你的独立站收款智能化

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

所有用户都能使用sudo吗

是的&#xff0c;Linux系统中的普通用户可以通过配置访问 sudo 命令来获得超级用户&#xff08;root&#xff09;权限的临时访问权。这使得普通用户可以在需要时执行需要管理员权限的操作&#xff0c;而无需永久性地切换到超级用户账户。 通过 sudo 命令&#xff0c;系统管理员…...

【广州华锐视点】VR警务教育实训系统模拟真实场景进行实践训练

随着科技的发展&#xff0c;虚拟现实技术在教育领域得到了广泛的应用。VR警务教育实训系统就是其中的一种应用&#xff0c;该系统由广州华锐互动开发&#xff0c;可以模拟真实的警务场景&#xff0c;让学生通过虚拟现实技术进行实践训练&#xff0c;提高学生的实践能力和技能水…...

【深入浅出C#】章节 7: 文件和输入输出操作:处理文本和二进制数据

文件和输入输出操作在计算机编程中具有重要性&#xff0c;因为它们涉及数据的持久化存储和交互。数据可以是不同类型的&#xff0c;例如文本、图像、音频、视频和二进制数据。这些不同类型的数据具有不同的存储需求。 文本数据是最常见的数据类型之一&#xff0c;用于存储和传输…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...