正则表达式 —— Grep

news2024/12/25 9:01:57

文本处理三剑客:Grep、Sed、Awk

这三个工具都是基于对文本的内容进行增删改查的操作,此篇着重介绍grep与正则表达式的应用,以及扩展正则表达式。

正则表达式

什么是正则表达式?

它是由一类特殊字符以及文本字符所编写的一种模式,处理文本当中的内容;其中的一些字符不表示字符的字面含义,这些字符表示控制或者通配的功能,正则表达式可以对命令结果和文件内容都可以进行匹配。

通配符常用符号

通配符仅仅只能匹配文件名、目录名,不能匹配文件的内容;

  • *:  匹配任意一个或多个字符           例:ls  *.txt
  • ?:匹配任意一个字符                      例:ls  ?.txt
  • [ ] :匹配范围内的任意单个字符        例:touch  {a..z}.txt     ls  [a-z].txt

基本正则常用符号

基本正则:字符匹配,元字符,匹配的部分需要用引号引起来。

  • .:表示匹配任意的单个字符,可以是一个汉字   例:ls  |  grep  "abc."
  • \:表示转义符   
  • \.:   仅仅表示一个点,无其它含义
  • ():表示分组的意思    
  • \(\):这时仅表示括号
  • [ ]:匹配已指定范围内的任意单个字符     
    例:ls  |  grep  "[0-9  a-z  A-Z]"   展示所有数组以及大小写字母
  • [ ^ ]:表示取反,指定范围外的    
    例:ls  |  grep  "[A-Z0-9.]"  
  • [[ :blank: ]]:匹配空白字符(空格和tab键)
  • 例:以rc开头,任意单个字符,0-6的数字

  •  只匹配以rc.为开头的文件

  •  过滤/etc/passwd中任意的两个字符r和t

正则次数的表达式

  • *:匹配前面的字符任意次,有多少匹配多少;也称贪婪模式
  •  .*:也是匹配任意长度的字符,但是至少要有一次,不包括0次;最少前面要有一个o,否则不匹配
  •  \?:表示匹配前面的字符0次或者1次(即可有可无) 有则匹配,没有也匹配
  • \+:匹配前面的字符至少一次,最多可以无数次
  • \{n\}:匹配前面的字符=n次   精确匹配  n:表示前面字符出现的次数,多一次少一次都不行、、
  • \{m,n\}:匹配前面的字符最少m次,最多n次
  • \{,n\}:匹配前面的字符最多n次
  • \{n,\}:匹配前面的字符至少n次

匹配次数就是核心

位置锚定

以什么为开头  以什么为结尾

  • ^:以什么为开头,在模式的左侧       ^r  以r为开头
  • $:以什么最为结尾,在模式的右侧    r$  以r为结尾
  • ^  root  $:用于匹配整行,而且整行中只有一个 root才显示
  • ^$:匹配空行
  • 词首锚定:>或者 \b  
  • 词尾铆钉:<或者 \b  

推荐用\b 统一来判断词首和词尾

 例:

 输入词首就是词首搜索,输入词尾就是词尾搜索

\ |:表示逻辑或

 

扩展正则表达式

扩展正则与基本正则意思相同,仅仅区别于写法上的不同;通常使用扩展正则,更加的直观。

它的表达格式为:egrep  或  grep -E   所有的 \  斜杠都可去掉

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

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

相关文章

【后端面经-Spring】Spring简介

【后端面经-Spring】Spring简介 1. Spring简介2. Spring模块3. Spring核心特性4. Spring的后续拓展面试模拟参考资料 1. Spring简介 Spring是为了简化java项目开发设计的一款设计层面开源框架&#xff0c;其设计目的就是为了“简化开发”。 它使用分层架构&#xff0c;解决业务…

基于Python实现种差值方法

完整资料进入【数字空间】查看——baidu搜索"writebug" 一、种差值方法的实现与问题 三种插值方法都是使用Python自己实现的。 1.1 最近邻插值 寻找每个中心点周围的八个点中有无未丢失的点&#xff0c;如果有的话就赋值为第一个找到的点&#xff0c;如果没有就扩大…

【C语言趣味教程】代码注释:小孩子才做选择,我全都要

【C语言趣味教程】(4) 变量&#xff1a;代码注释 | 变量的声明 | 初始化与赋值 | 作用域与生命周期 | 局部变量与全局变量 &#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; ​—— 热门专栏《维生素C语言》的重制版 —— &#x…

MySQL的约束

目录 1.约束&#xff08;constraint&#xff09;的概述 2.约束的分类 1.约束的字段的个数: 2.约束的作用范围: 3.约束的作用/功能 3.如何添加约束 4.如何查看约束 5.非空约束&#xff08;not null&#xff09; 6.唯一性约束&#xff08;unique&#xff09; 7.主键约…

赛多利斯Sartorius天平java后端对接

业务场景 要将赛多利斯天平的数据读出来解析并且显示到对应的数字框,支持一台设备连接多种精度的天平 后端实现 通过协议解析数据,然后将数据存储 详细代码就不贴了,感兴趣的可以私聊我

区间预测 | MATLAB实现基于Bootstrap的区间预测

区间预测 | MATLAB实现基于Bootstrap的区间预测 目录 区间预测 | MATLAB实现基于Bootstrap的区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现基于Bootstrap的区间预测 MATLAB实现基于Bootstrap区间预测&#xff08;完整源码和数据&…

被大厂抢着要,最终拿到20k的高薪offer

被大厂抢着要&#xff0c;各个大企业为留住自己不断给自己加薪&#xff0c;这种只在梦中见过的场景&#xff0c;真实的发生在黑马学长身上了&#xff01; 周同学&#xff0c;刚毕业后便从事的IT行业&#xff0c;但 2 年以来&#xff0c;工作一直没有什么起色&#xff0c;为了跳…

Redis高级篇(二)

Redis高级篇之多级缓存 什么是多级缓存 JVM进程缓存 Lua语法入门 实现多级缓存 缓存同步 一、什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未命中则查询数据库&#xff0c;如图&#xff1a; 存在下面的问题&#xff1a;…

React 框架下自己写一个braft编辑器,然后将编辑器内容展示在网页端

1.首先自己写一个编辑器 输入文字&#xff1b; 支持选择表情&#xff1b; 可添加小程序链接&#xff1b;可添加网页链接&#xff1b;并且可以编辑删除&#xff1b;效果如下 2.输入完毕后&#xff0c;点击文本输入框保存&#xff0c;将便携式内容回显&#xff0c; 渲染时…

python中——requests爬虫【中文乱码】的3种解决方法

requests是一个较为简单易用的HTTP请求库&#xff0c;是python中编写爬虫程序最基础常用的一个库。 而【中文乱码】问题&#xff0c;是最常遇到的问题&#xff0c;对于初学者来说&#xff0c;是很困恼的。 本文将详细说明&#xff0c;python中使用requests库编写爬虫程序时&…

List集合类详解(附加思维导图)

目录 一、List集合思维导图 二、List集合类的常见方法 2.1、ArrayList集合常用方法 2.2、LinkedList集合常用方法 一、List集合思维导图 二、List集合类的常见方法 2.1、ArrayList集合常用方法 ①.add(Object element) 向列表的尾部添加指定的元素。 ②.size() 返回列表中…

前端vue部署到nginx并且配置https安全证书全流程

说明一下&#xff1a; 本人原本使用的是docker安装nginx通过挂载实现部署&#xff0c;但是出现了很多bug&#xff08;例如部署安全证书后还是无法访问&#xff09;&#xff0c;所以困扰了很久&#xff0c;最后改为本地安装nginx&#xff0c;最终在不懈的努力下终于按照好了&…

H5页面 卡片 分享朋友圈和好友

项目背景&#xff1a; 前后端分离&#xff1a; 后端&#xff1a; C# 开发 前端&#xff1a; 就是微信中打开的 H5页面 纯 H5 业务流程&#xff1a; 因为在 h5 中实现 卡片分享 的一个字段, 需要后端 访问 腾讯API 生成&#xff0c;所以整个分享结构和流程就比较长&#xff…

Stable diffusion 和 Midjourney 怎么选?

通过这段时间的摸索&#xff0c;我将和你探讨&#xff0c;对普通人来说&#xff0c;Stable diffusion 和 Midjourney 怎么选&#xff1f;最重要的是&#xff0c;学好影视后期制作对 AI 绘画创作有哪些帮助&#xff1f;反过来&#xff0c;AI 绘画对影视后期又有哪些帮助&#xf…

Python案例变量实践

编程&#xff1a;非常需要实践&#xff0c;不要光看&#xff0c;一定要动动手 什么是程序&#xff1f; 数据结构算法 数据结构&#xff1a;存储和使用数据的方式 算法&#xff1a;解决问题的步骤 解决一个问题的时候&#xff0c;分析问题&#xff0c;设计算法&#xff0c;编…

网约车服务端线上流量巡检与测试验收技术

摘要 滴滴网约车致力于让出行更美好&#xff0c;平台为司乘提供良好体验的同时承载了广大群众的出行服务&#xff0c;致使我们对服务可用性的要求较高。更快地发现系统bug&#xff0c;可以让更少的司乘用户受影响。发现bug的能力更精细&#xff0c;可以让一些不易被用户感知但…

2D坐标系下的点的转换矩阵(平移、缩放、旋转、错切)

文章目录 1. 平移 &#xff08;Translation&#xff09;2. 缩放 &#xff08;Scaling&#xff09;3. 旋转 &#xff08;Rotation&#xff09;4. 错切 &#xff08;Shearing&#xff09;5. 镜像 &#xff08;Reflection&#xff09; 1. 平移 &#xff08;Translation&#xff09…

Nautilus Chain:主权模块化区块链的早期实践

“Nautilus Chain 是目前行业内首个以模块化的方式构建的主权 Layer3 区块链系统&#xff0c;其也是 Celestia 模块化 Layer0 体系下最早的印证者&#xff0c;现在 Nautilus Chain 主网正式上线&#xff0c;揭示着模块化区块链正在从早期的理论阶段走向实践。” Celestia &…

Godot 4 源码分析 - 获取属性信息

在管道通信基础上&#xff0c;可进行宿主程序与Godot的双向通信。 先拿属性信息试试手。 DrGraph端 static UnicodeString command "Book.position"; if (InputQuery("输入窗口", "请输入待获取的属性信息", command)) {TDrStream_Get drGet…

5.10 Bootstrap 按钮(Button)插件

文章目录 Bootstrap 按钮&#xff08;Button&#xff09;插件加载状态单个切换复选框&#xff08;Checkbox&#xff09;单选按钮&#xff08;Radio&#xff09;用法选项方法 Bootstrap 按钮&#xff08;Button&#xff09;插件 按钮&#xff08;Button&#xff09;在 Bootstrap…