文本三剑客grep与正则表达式、元字符

正则表达式

正则表达式又称为正规表达式、常规表达式、在代码中常简写为regex、regex或RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定的字符串。

        这里不得不提的是shell三剑客:grep,sed,awk。

一、grep和元字符

grep [选项]  [查找条件(正则)]  [目标文件]
 
-E:开启扩展的正则表达式
-c:计算找到'搜寻字符串'的次数
-i:忽略大小写的不同,所以大小写视为相同
-o:只找到这个关键字就可以
-v:反向选择,即输出没有匹配到的那些字符
--color=auto:可以将找到的关键词部分加上颜色的显示!
-n:顺便输出行号
-w:表示精确匹配一个字符

-q :静默

-R :  可以查找目录下面的文件

-B2 : 前两行

-A2 : 后两行

-C2 : 上下两行

egrep [选项]  [查找条件]  [目标文件]

-l   : 只要文件名

-n  :  带行号

元字符定义

元字符是在正则表达式中具有特殊含义的字符,用于定义搜索模式中字符的出现方式和位置

元字符使得正则表达式能够以更灵活和动态的方式来匹配文本。在实际应用中,我们经常需要结合记忆、示例学习和案例练习来熟练掌握它们的使用。通过不断实践,我们可以构建出复杂的正则表达式,以高效地处理文本匹配和数据提取任务。

分类:

  • 数量元字符* 表示前一个字符可以出现0次或多次;+ 表示前一个字符至少出现1次;? 表示前一个字符出现0次或1次;花括号 {n} 用来指定前一个字符或组合的确切重复次数。
  • 边界元字符^ 表示行的开头;$ 表示行的结尾;这些元字符帮助我们定位特定的字符串位置。
  • 字符类元字符. 用来匹配任意单个字符(除了换行符);方括号 [] 用来定义一个字符集合,匹配其中任一字符;而 [^] 则是排除特定字符的集合。
  • 选择元字符:竖线 | 用作“或”操作,允许选择两个正则表达式中的一个进行匹配。
  • 分组元字符:圆括号 () 用于将多个字符作为一个整体进行处理,它们通常与数量元字符一起使用来指定组的出现次数。

1.基本正则表达式元字符串:

  • ^ :行首定义符
  • grep ^root /etc/passwd
  • $ :行尾定义符
  • grep root$ /etc/passwd
  • .  :匹配任意单个字符  
  • grep r.t /etc/passwd
  • *  :匹配前导符0次到多次
  • grep " ro* " /etc/passwd (配合左侧的字符) 
  • .* : 匹配任意多个字符
  • grep " .* " /etc/passwd
  • [ ] : 匹配指定范围内的一个字符
  • grep " [rR]oot " /etc/passwd
  • [-] : 匹配指定范围内的一个字符,连续的范围
  • grep "[a-z]oot" /etc/passwd
  • [^] : 匹配不在指定组内的字符
  • grep "[^a1?/]" /etc/passwd (排除中括号内的所有字符,只取除这些字符外的所有字符的结果)
  • \ : 用来转义元字符(' '   " "  \),脱意符。(\应该在需要被转义字符的左侧
  • grep "r.\ot" /etc/passwd
  • \< : 词首定位符
  • grep " \<root " etc/passwd (只查询以root开头的)
  • \> : 词尾定位符
  • 同上,意思相反的啦
  • ( ) : \(..\) 匹配稍后使用的字符的标签
  • (:3,9 s/\(.*\)/#\1/ 加注释)
  • x\{m\} : 字符x重复出现m次
  • grep r" \{o\} " etc/passwd
  • x\{m,\}
  • grep r" o\{2}\ "t etc/passwd
  • x\{m,n\}
  • grep r" o\{3,4\} "t etc/passwd

2.扩展正则表达式元字符串(egrep扩展支持正则)

  • + : 匹配1~n个前导字符 
  • egrep ro+ot /etc/passwd
  • ? : 匹配0~1个前导字符
  • egrep "ro*ot" /etc/passwd
  • a|b : 匹配 a 或 b 
  • egrep " o|o " /etc/passswd 
  • (): 组字符
  • egrep "r(o|ot)" /etc/passwd

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无人播剧直播收益在哪里!快手无人播剧新秘籍:版权无忧,日入四位数攻略

无人播剧顾名思义就是通过短视频平台直播不需要真人出镜受众群体通过网络短视频平台看到的经典影视剧集可以实现24小时不停断的播放利用多种途径变现的一种直播形式 1、操作简单、不露脸、不出镜2、手机、电脑都可以操作3、可以矩阵操作4、0粉丝、0作品、0保证金就可以开播5、…

FreeRTOS任务调度器

目录 1、什么是任务调度器 2、FreeRTOS中的任务调度器 2.1 抢占式调度 2.2 时间片调度 2.3 协作式调度 3、任务调度案例分析 3.1 实验需求 3.2 CubeMX配置 3.3 代码实现 3.3.1 uart.c 重定向printf 3.3.2 打开freertos.c并添加代码 3.3.4 代码现象 1、什么是任务调度…

家装新宠!装修APP开发解决方案,为业主提供全新装修模式

随着人们对家庭装修的需求度越来越高&#xff0c;装修APP开发也随之出现。如今装修APP开发可实现互联网与传统家装行业的信息结合&#xff0c;由传统的家装行业广告模式向移动端的互联网模式进行转移&#xff0c;实现传统家装行业与互联网的相辅相成&#xff0c;以此来推动家装…

Maven 插件使用

1.spring-boot-maven-plugin 我们直接使用 maven package &#xff08;maven自带的package打包功能&#xff09;&#xff0c;打包Jar包的时候&#xff0c;不会将该项目所依赖的Jar包一起打进去&#xff0c;在使用java -jar命令启动项目时会报错&#xff0c;项目无法正常启动。…

每日一题8:Pandas-改变数据类型

一、每日一题 编写一个解决方案来纠正以下错误&#xff1a; grade 列被存储为浮点数&#xff0c;将它转换为整数。 返回结果格式如下示例所示。 解答&#xff1a; import pandas as pddef changeDatatype(students: pd.DataFrame) -> pd.DataFrame:students[grade] studen…

Java入门基础学习笔记7——Intellij IDEA开发工具概述、安装

之前的开发工具存在一些问题&#xff1a; 文本编辑工具&#xff1a;记事本、NotePad、EditPlus、Sublime...编写代码的时候没有错误提醒、没有智能代码提示、需要自己进行编译、执行、功能不够强大。 集成开发环境&#xff08;IDE&#xff1a;Integrated Development Environm…

推荐4个可用的github国内镜像

Github是全球最大的代码托管云平台&#xff0c;超过1亿用户在平台上分享代码及数据&#xff0c;深受生物信息学软件开发者的喜爱&#xff0c;并且现在发表文章&#xff0c;若涉及到代码&#xff0c;编辑还要求我们把代码及数据存放在github上&#xff0c;以便检查数据的真实性和…

matlab使用教程(68)—修改双y轴图的属性

使用 yyaxis 函数可创建一个左右两侧都有 y 轴的 Axes 对象。与 y 轴有关的坐标区属性有两个值。但是&#xff0c;MATLAB 仅允许访问活动侧的值。例如&#xff0c;如果左侧处于活动状态&#xff0c;则 Axes 对象的 YDir 属性包含左侧 y 轴的方向。同样&#xff0c;如果右侧处于…

DIY可视化软件环境准备

DIY官网可视化工具做好的可视化拖拽开发工具无须编程、零代码基础、所见即所得设计工具支持轻松在线可视化导出微信小程序、支付宝小程序、头条小程序、H5、WebApp、UNIAPP等源码 支持组件库,高颜值,卡片,列表,轮播图,导航栏,按钮,标签,表单,单选,复选,下拉选择,多层选择,级联选…

XTuner笔记

为什么要微调&#xff1a; 1. 模型不具备一些私人定制的知识 2。模型回答问题的套路你不满意。 对应衍生出来两种概念 增量预训练微调&#xff1a; 使用场景&#xff1a;让基座模型学习到一些新知识&#xff0c;如某个垂类领域的常识训练数据&#xff1a;文章、书籍、代码等…

Microsoft 365 for Mac v16.84 office365全套办公软件

Microsoft 365 for Mac是一款功能丰富的办公软件套件&#xff0c;为Mac用户提供了丰富的功能和工具&#xff0c;提高了工作效率和协作能力。Microsoft 365 for Mac是一款专为Mac用户设计的订阅式办公软件套件&#xff0c;旨在提高生产力和效率。 Microsoft 365 for Mac v16.84正…

图解HTTP(2、简单的 HTTP 协议)

HTTP 协议用于客户端和服务器端之间的通信 请求访问文本或图像等资源的一端称为客户端&#xff0c;而提供资源响应的一端称为服务器端。 通过请求和响应的交换达成通信 请求必定由客户端发出&#xff0c;而服务器端回复响应报文 请求报文是由请求方法、请求 URI、协议版本、…

ArcGIS10.2能用了10.2.2不行了(解决)

前两天我们的推文介绍了 ArcGIS10.2系列许可到期解决方案-CSDN博客文章浏览阅读2次。本文手机码字&#xff0c;不排版了。 昨晚&#xff08;2021\12\17&#xff09;12点后&#xff0c;收到很多学员反馈 ArcGIS10.2系列软件突然崩溃。更有的&#xff0c;今天全单位崩溃。​提示许…

tokenize

源码 def tokenize():eot enc._special_tokens[<|endoftext|>] # end of text tokendata_filename os.path.join(DATA_CACHE_DIR, "tiny_shakespeare.txt")text open(data_filename, r).read()# lets treat every persons statement in the dialog as a se…

mysql中sql语句 exists 判断子句的用法

如果子查询成立才执行父查询 exists判断子查询的使用例子&#xff1a; 张三不存在所以前面的父查询不执行 后面的子句结果存在&#xff0c;所以前面的父查询被执行 where条件所连接的嵌套子查询都是&#xff0c;条件子查询 ———————————————————————…

无人播剧项目怎么做,快手无人播剧全攻略,版权难题一招破解!

相信大家比较关注的问题就是快手无人直播无人播剧到底是不是真的&#xff1f;是不是骗人的&#xff1f;靠不靠谱&#xff1f;是不是真的能赚钱&#xff1f;会不会涉及到版权问题&#xff1f;等等。接下来我就给大家一一做解答&#xff01; 首先关于快手无人播剧是不是骗人的&a…

Python-VBA函数之旅-sorted函数

目录 一、sorted函数的常见应用场景 二、sorted函数使用注意事项 三、如何用好sorted函数&#xff1f; 1、sorted函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://blog.csdn.net/ygb_1024?spm1…

【WEEK11】 【DAY4】Employee Management System Part 5【English Version】

2024.5.9 Thursday Continued from 【WEEK11】 【DAY3】Employee Management System Part 4【English Version】 Contents 10.6. Add Employee10.6.1. Modify list.html10.6.2. Modify EmployeeController.java10.6.3. Create add.html10.6.4. Restart and Run 10.6. Add Emplo…

【Vue3进阶】- Pinia

什么是Pinia Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。它提供了类似于 Vuex 的功能&#xff0c;但比 Vuex 更加简单和直观。 需要在多个组件之间共享状态或数据时使用 Pinia 的 store&#xff0c;这样可以避免 props 和 eventBus 等传统方法…

刷代码随想录有感(62):修建二叉搜索树

题干&#xff1a; 代码&#xff1a; class Solution { public:TreeNode* traversal(TreeNode* root, int low, int high){if(root NULL)return NULL;if(root->val < low)return traversal(root->right, low, high);if(root->val > high)return traversal(ro…