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: 文件和输入输出操作:处理文本和二进制数据
文件和输入输出操作在计算机编程中具有重要性,因为它们涉及数据的持久化存储和交互。数据可以是不同类型的,例如文本、图像、音频、视频和二进制数据。这些不同类型的数据具有不同的存储需求。 文本数据是最常见的数据类型之一,用于存储和传输…...
连接池为什么重要?从一次“数据库没打满,但应用越来越慢”的事故说起
连接池为什么重要?从一次“数据库没打满,但应用越来越慢”的事故说起 在很多后端系统里,数据库往往是最容易被怀疑的对象。 接口慢了,第一反应是: “是不是数据库扛不住了?” 订单页卡住了,第一…...
Linux系统功耗调优实战:从监控到内核级优化指南
1. 项目概述:为什么要在Linux上折腾功耗? 最近几年,我手头的服务器、开发板和笔记本越来越多,从24小时开机的家庭服务器,到需要长续航的移动开发环境,再到追求极致静音和低发热的桌面工作站,“电…...
G-Helper终极指南:如何彻底解决华硕笔记本散热与性能管理难题
G-Helper终极指南:如何彻底解决华硕笔记本散热与性能管理难题 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…...
猫抓插件:5分钟掌握浏览器资源嗅探的终极武器
猫抓插件:5分钟掌握浏览器资源嗅探的终极武器 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容无处不在的今天,你…...
Path of Building:3个步骤从Build小白到规划大师的完整指南
Path of Building:3个步骤从Build小白到规划大师的完整指南 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building作为流放之路玩家最信赖的Build规…...
PowerInfer:基于热点神经元预测的LLM高性能推理引擎部署指南
1. 项目概述:当推理速度成为AI落地的瓶颈最近在折腾本地大模型推理的朋友,估计都绕不开一个核心痛点:速度。模型效果再好,生成一句话要等上十几秒,那种“卡顿感”足以劝退绝大多数想把它集成到实际应用里的开发者。我自…...
基于RP2040与CircuitPython的HDMI倒计时器:RTC与DVI原生输出实践
1. 项目概述与核心价值如果你手头有一块带HDMI输出的微控制器开发板,比如Adafruit的Feather RP2040 DVI,又恰好需要一个能摆在桌面上、精确到秒的倒计时器,那么今天这个项目就是为你量身定做的。它不仅仅是一个简单的“Hello World”式显示应…...
Kubernetes原生自动化部署工具Keel:实现容器镜像自动更新的最后一公里
1. 项目概述:什么是Keel,以及它解决了什么问题如果你和我一样,在团队里负责过一段时间的应用部署和更新,那你一定对“发布日”的紧张感深有体会。开发那边代码一提交,这边就得开始手动拉取镜像、更新Kubernetes的Deplo…...
AI智能体记忆系统设计:从RAG到长期记忆的工程实践
1. 项目概述:从“记忆”到“智能”的跨越在AI智能体(Agent)的开发浪潮中,我们常常面临一个核心挑战:如何让智能体在复杂的、多轮次的交互中,表现得像一个真正有“记忆”和“经验”的专家?传统的…...
g1810,g3810,ip2700,g5080,g1800,ts3380,TS8380,ts6480报错5B00,P07,E08,5b02,1704,1700,5b04,佳能v6.200,亲测有用。
下载:点这里下载 备用下载:https://pan.baidu.com/s/1WrPFvdV8sq-qI3_NgO2EvA?pwd0000 常见型号如下: G系列 G1000、G1100、G1200、G1400、G1500、G1800、G1900、G1010、G1110、G1120、G1410、G1420、G1411、G1510、G1520、G1810、G1820、…...











