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

news2024/12/26 10:49:27

正则表达式

正则表达式又称为正规表达式、常规表达式、在代码中常简写为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.coloradmin.cn/o/1663299.html

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

相关文章

AcwingWeb应用课学习笔记

VSCode自动格式化 选中Format On Save不起作用 在设置中搜索default formatter&#xff0c;修改成Prettier-Code formatter meta标签 HTML 元素表示那些不能由其它 HTML 元相关&#xff08;meta-related&#xff09;元素&#xff08;(、,

全套停车场管理系统报价多少钱?停车场管理系统由哪些设备组成?

随着城市化进程的加快&#xff0c;汽车保有量的不断攀升&#xff0c;停车场的管理和运营成为城市基础设施建设的重要组成部分。一个高效、智能的停车场收费系统不仅能提升停车效率&#xff0c;还能增强用户体验&#xff0c;对城市的交通管理起到关键作用。本文将为您详细介绍全…

Linux NFS共享目录配置漏洞

Linux NFS共享目录配置漏洞 一、实验目的二、实验原理三、复现准备四、漏洞复现4.1、复现前提4.2、正式复现 一、实验目的 利用 NFS共享目录配置漏洞读取目标主机的 /etc/passwd 文件内容NFS 服务配置漏洞&#xff0c;赋予了根目录远程可写权限&#xff0c;导致 /root/.ssh/au…

TypeScript 中的类型与接口

在 TypeScript 中&#xff0c;定义类型有两种方式&#xff1a;“类型”和“接口”。 人们经常想知道该使用哪一种&#xff0c;答案并非适用于所有情况。有时一种更好&#xff0c;但在许多情况下&#xff0c;两者可以互换使用。 我们来详细了解一下类型和接口的不同点和相似点…

当时这样说就好了的笔记

系列文章目录 当时这样说就好了的笔记 文章目录 系列文章目录一、 不用好口才&#xff0c;怎么谈都讨喜的“说话金律”1、 掌握对方爱聊什么是交谈热络的第一步2、 装笨让对方当主角&#xff0c;和谁都能聊不停3、 “讲道理”谁都怕&#xff0c;坚持己见最伤感情4、 懂“聆听附…

Java——类与对象

目录 一、面向对象的初步认识 1.1 什么是面向对象 1.2 面向对象与面向过程 二、类的定义与使用 2.1 简单认识类 2.2 类的定义格式 三、类的实例化 3.1 什么是实例化 3.2 类和对象的说明 四、this引用 4.1 为什么要有this引用 4.2 什么是this引用 ​编辑 4.3 this引用…

数据增强,迁移学习,Resnet分类实战

目录 1. 数据增强&#xff08;Data Augmentation&#xff09; 2. 迁移学习 3. 模型保存 4. 102种类花分类实战 1. 数据集 2.导入包 3. 数据读取与预处理操作 4. Datasets制作输入数据 5.将标签的名字读出 6.展示原始数据 7.加载models中提供的模型 8.初始化…

轻松操作!ae导出mp4格式,一篇文章学会

在视频制作的过程中&#xff0c;Adobe After Effects作为一款强大而专业的后期处理工具&#xff0c;为我们提供了丰富的特效和编辑功能。然而&#xff0c;在完成创作后&#xff0c;将项目导出为通用的MP4格式是分享和展示作品的关键一步。在本文中&#xff0c;我们将探讨ae导出…

营销的本质是“利他”,资深运营高手分享9套消费返利玩转市场!

营销的本质是“利他”&#xff0c;资深运营高手分享9套消费返利玩转市场&#xff01; 文丨微三云营销总监胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 引言&#xff1a;2024年移动互联网基本已经占据了核心不可篡改的地位&#xff0c;而…

Graphormer:Transformer用于图预测任务

文章信息 文章题为“Do Transformers Really Perform Bad for Graph Representation?”&#xff0c;该文章发表于2021年NeurIPS会议上。文章提出Graphormer图预测任务。 摘要 Transformer架构已经成为许多领域的主导选择&#xff0c;例如自然语言处理和计算机视觉。此外…

1015: 堆排序算法

解法&#xff1a; 20240510_193050 最后一个非叶子节点就是最后一个节点的父节点 进行一次最小堆调整&#xff08;如视频&#xff09; #include<iostream> #include<vector> using namespace std; void min_heapfy(vector<int>& a,int sta,int end) {i…

游戏行业被攻击的原因、攻击种类及合适的服务器

很多游戏刚上线没多久就频繁遭到同行恶意攻击。在相关数据报告中&#xff0c;2023年上半年遭受DDoS攻击的行业中&#xff0c;游戏行业占到40%&#xff0c;而且攻击方式、攻击频率、攻击峰值呈明显上升趋势。很多充满创意的游戏开发公司刚才开发上线一个很有特色的产品&#xff…

在k8s中安装Grafana并对接Prometheus,实现k8s集群监控数据的展示

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Grafana&#xff1a;让数据说话的魔术师》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Grafana简介 2、Grafana的重要性与影响力 …

需求规格说明书设计规范(编制实际项目案例-word)

二、 项目概述 2.1 项目背景 2.2 现状分析 2.2.1 业务现状 2.2.2 系统现状 三、 总体需求 3.1 系统范围 3.2 系统功能 3.3 用户分析 3.4 假设与依赖关系 四、 功能需求 五、 非功能性需求 5.1 用户界面需求 5.2 软硬件环境需求 5.3 产品质量需求 5.4 接口需求 5.5 其他需求 六、…

C语言(指针)2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

在拥有多个同名称密码的ap环境中,如何连接到指定信道或mac的ap路由器?

在给客户做ESP32-C3入墙开关项目时&#xff0c;客户问&#xff1a;在拥有多个同名称密码的ap环境中&#xff0c;如何连接到指定信道或mac的ap路由器&#xff1f;针对这个问题&#xff0c;启明云端工程师给出下面解决方法。 1、将wifi_sta_config_t配置中的channel配置为该信道…

又一位互联网大佬转行当网红,能写进简历么?

最近半个月&#xff0c;有两个中年男人仿佛住进了热搜。 一个是刚刚辟谣自己“卡里没有冰冷的 40 亿”的雷军&#xff0c;另一个则是在今年年初就高呼“如果有可能&#xff0c;企业家都要去当网红”的 360 创始人周鸿祎。 他也确实做到了。 先是作为当年 3Q 大战的当事人&…

企业破产重整:从“至暗时刻”到“涅槃重生”

今天我们不谈星辰大海&#xff0c;而是要潜入商业世界的深海区&#xff0c;探索那些濒临绝境的企业是如何借助“破产重整”的神秘力量&#xff0c;实现惊天大逆转的&#xff01; 一、破产重整&#xff0c;到底是个啥&#xff1f; 想象一下&#xff0c;企业像是一位远航的船长…

Map按value降序并统计

package com.ldj.cloud.user.demo;import java.util.*;/*** User: ldj* Date: 2024/5/11* Time: 10:03* Description: map按value降序*/ public class Tr {public static void main(String[] args) {ArrayList<String> list new ArrayList<>();list.add("a&q…

在家就可以轻松赚零花钱的副业

互联网的兴起让很多人实现了在家办公的梦想&#xff0c;同时也为人们提供了更多的挣钱方式。以下是4种可以在家中兼职副业赚钱的方法&#xff1a; 1. 写作工作 如果你善于写作&#xff0c;并且有一定的文学素养&#xff0c;那么可以通过自己的博客或其他媒体平台来写作&#…