六、文本搜索工具(grep)和正则表达式

一、grep工具的使用

1、概念

grep: linux 系统中的一个强大的文本搜索工具,可以按照 正则表达式 搜索文本,并把匹配到的行打印出来(匹配到的内容标红)。

2、语法

grep [options]…… pattern [file]……
工作方式: grep 在一个或者多个文件中搜索字符串模板,如果模板中包括空格,需要使用引号引起来,模板后的所有字符串会被看作是文件名。
工作结果:如果模板搜索成功,则返回 0 状态码;如果搜索不成功,则返回 1 状态码;如果搜索的文件不存在,则返回2 的状态码。我们可以利用这些返回状态码进行一些自动化的 shell 脚本处理工作。

 3、相关选项

选项说明
-i忽略大小写
-e实现多个选项间的逻辑或关系

-E

如果pattern是扩展正则表达式,需要使用-E选项,grep -E = egrep

-n

显示行号
-w按单词匹配

-o

只显示匹配到的内容
-v不显示匹配到的行
-c统计匹配的

4、相关使用

 -i、-E、-e(使用扩展正则表达式时必须加 -E 选项):

两种表达方式:忽略大小写匹配ab或c;

-w:

grep单独匹配字符串与加-w选项后匹配字符串的区别;

 -o:

只显示匹配到的内容;

-v:

实现反选;

-c:

统计匹配到的行数;与wc -l 效果相同;

-r:

递归查询;

-rl:

递归查询问及那,只显示匹配到内容的文件名字;

二、正则表达式

1、背景

在进行程序设计的过程中,用户处理某些文本,需要查找符合某些比较复杂规则的字符串,使用正则表达式则会以非常简短的代码完成。

2、概念

正则表达式:通过一些特殊字符的排列,用以查找、替换、删除一行或多行文字字符串的表达式,简单来说,就是用在字符串的处理上的一项表达式。由于正则表达式语法简练,功能强大得到了许多程序设计语言的支持,包括JavaC++Perl以及Shell等。

3、分类

  • 基本正则表达式
  • 扩展正则表达式

(1)基本正则表达式

概念
基本正则表达式(Basic Regular Expression,BRE) ,又称为标准正则表达式,是最早制订的正则表达式规范,仅支持最基本的元字符集。基本正则表达式是POSIX 规范制订的两种正则表达式语法标准之一,另外一种语法标准称为扩展正则表达式。
②相关选项
元字符说明
^以某个字符开头
$以某个字符结尾
.匹配任意单字符
*对前一项进行0次或者多次重复匹配
{m,n}将前一项字符重复m-n次,{m, } , {, n} , {m}
[ ]对方括号内的单字符进行匹配
[^]不匹配方括号内的单字符
^[ ]匹配以某个字符开头的行
\转义字符,让一些特殊符号失效
()定义一个子表达式
词首【\<或\b】和词尾锚定【\>或\b】其后面的任意字符必须作为单词首部出现;其前面的任意字符必须作为单词尾部出现

③相关使用

^:

$:

. :

.. :

匹配任意两个字符;

* :

——正则表达式中的 * 与其他命令中的 * 区分开

Ⅰ、正则表达式中,对前一项字符进行0次或者多次重复匹配——使用时,*前必须加需要匹配的字符;

Ⅱ、其他命令中,匹配任意字符;

{m, n}:

grep -E (不用转义字符);不用则需要转义;

 {,n}:最少0次,没有的都匹配;

 [ ]:

一个一个进行匹配;

另一种写法(了解);

[^]:

不匹配单括号中的字符,只匹配有符号的行(空格也算)

 ^[]:

匹配以[ ]中内容开头的行;

不匹配以方括号中开头的行;

():定义一个子表达式

\1——是子表达式,这里的\1表示匹配red字符,第三条命令表示匹配首尾相同(都是red),中间任意的字符(包括空格);

第一条命令的子表达式\1是.*,完整命令表示首尾、中间都匹配任意字符;

第二条命令的子表达式\1是. ,完整的命令表示匹配首尾都相同的任意单字符,中间任意的字符;

\<或\b:
\>或者\b:

(2)扩展正则表达式

①概念
扩展正则表达式(Extended Regular Expression,ERE) 支持比基本正则表达式更多的元字符,但是扩 展正则表达式对有些基本正则表达式所支持的元字符并不支持。
前面介绍的元字符 “^”、“$”、“.”、“*”、“[]”以及“[^] 6 个元字符在扩展正则表达式都得到了支持,并且其意义和用法都完全相同,不再重复介绍。接下来重点介绍一下在扩展正则表达式中新增加的一些元字符。
②新增的元字符
元字符说明
将前一项字符进行0次或者1次的重复匹配
+将前一项进行1次或者多次的重复匹配
(|)匹配 | 符号左边或者右边的字符

只有加了-r的才可以跟目录,否则跟只能文件

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

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

相关文章

【python】爬去二手车数据 未完成

技术方案 python selenium 先下载Microsoft Edge WebDriver Microsoft Edge WebDriver 官网 先看一下自己的edge版本 搜索到版本然后下载自己的版本 安装依赖 pip install seleniumimport time from selenium import webdriverdriver webdriver.Edge(executable_pathr&qu…

玩游戏常常出现vc++runtime library error R6025 这是什么意思,该怎么解决?

当玩游戏时常常出现“vc runtime library error R6025”错误&#xff0c;这通常表明微软C开发运行库组件存在问题。以下是对该错误及其解决方法的详细解释&#xff1a; 错误含义 “vc runtime library error R6025”是一个与Visual C运行时库相关的错误&#xff0c;该错误表明…

【深度学习基础】一篇入门模型评估指标(分类篇)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 模…

深度学习基础02_损失函数BP算法(上)

目录 一、损失函数 1、线性回归损失函数 1.MAE损失 2.MSE损失 3.SmoothL1Loss 2、多分类损失函数--CrossEntropyLoss 3、二分类损失函数--BCELoss 4、总结 二、BP算法 1、前向传播 1.输入层(Input Layer)到隐藏层(Hidden Layer) 2.隐藏层(Hidden Layer)到输出层(Ou…

从技术视角看AI在Facebook全球化中的作用

在全球化日益加深的今天&#xff0c;人工智能&#xff08;AI&#xff09;作为一种变革性技术&#xff0c;正在深刻影响全球互联网巨头的发展方向。Facebook作为全球最大的社交媒体平台之一&#xff0c;正通过AI技术突破语言、文化和技术的障碍&#xff0c;推动全球化战略的实现…

41 基于单片机的小车行走加温湿度检测系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采样DHT11温湿度传感器检测温湿度&#xff0c;滑动变阻器连接数码转换器模拟电量采集传感器&#xff0c; 电机采样L298N驱动&#xff0c;各项参数通过LCD1602显示&#x…

Python3 爬虫 Scrapy的使用

安装完成Scrapy以后&#xff0c;可以使用Scrapy自带的命令来创建一个工程模板。 一、创建项目 使用Scrapy创建工程的命令为&#xff1a; scrapy startproject <工程名> 例如&#xff0c;创建一个抓取百度的Scrapy项目&#xff0c;可以将命令写为&#xff1a; scrapy s…

【S500无人机】--地面端下载

之前国庆的时候导师批了无人机&#xff0c;我们几个也一起研究了几次&#xff0c;基本把无人机组装方面弄的差不多了&#xff0c;还差个相机搭载&#xff0c;今天我们讲无人机的调试 硬件配置如下 首先是地面端下载&#xff0c;大家可以选择下载&#xff1a; Mission Planne地…

Android -- 简易音乐播放器

Android – 简易音乐播放器 播放器功能&#xff1a;* 1. 播放模式&#xff1a;单曲、列表循环、列表随机&#xff1b;* 2. 后台播放&#xff08;单例模式&#xff09;&#xff1b;* 3. 多位置同步状态回调&#xff1b;处理模块&#xff1a;* 1. 提取文件信息&#xff1a;音频文…

常用端口与Udp协议

目录 1.再谈端口 1.1 五元组 1.2 端口号范围划分 1.3 两个指令 1.3.1 netstat 1.3.2 pidof 2.UDP协议 2.1 协议整体格式 2.2 udp特点 2.3 udo缓冲区 1.再谈端口 1.1 五元组 端口号表示了一个主机上进行通信的不同的应用程序&#xff1b;在Tcp/IP协议中&#xff0c;用…

计算机毕业设计SpringCloud+大模型微服务高考志愿填报推荐系统 高考大数据 SparkML机器学习 深度学习 人工智能 Python爬虫 知识图谱

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

C/C++ 数据结构与算法【线性表】 顺序表+链表详细解析【日常学习,考研必备】带图+详细代码

1&#xff09;线性表的定义 线性表&#xff08;List&#xff09;&#xff1a;零个或多个数据元素的有限序列。 线性表的数据集合为{a1,a2,…,an}&#xff0c;假设每个元素的类型均为DataType。其中&#xff0c;除第一个元素a1外&#xff0c;每一个元素有且只有一个直接前驱元素…

搭建AD域服务器

搭建AD域服务器 使用深信服HCI搭建AD域服务器 1、新建虚拟机 2、填写参数 3、省略安装过程 4、进入服务器管理器 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 17、 18、 19、 20、 21、 22、 23、

【算法day4】链表:应用拓展与快慢指针

题目引用 两两交换链表节点删除链表的倒数第n个节点链表相交环形链表 1.两两交换链表节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&am…

【Gitlab】gitrunner并发配置

并发介绍 涉及到并发控制的一共有4个参数: concurrent , limit ,request_concurrency,parallel 全局的配置: [rootiZ2vc6igbukkxw6rbl64ljZ config]# vi config.toml concurrent 4 #这是一个总的全局控制&#xff0c;它限制了所有pipline&#xff0c;所有runner执行器…

vue 2 父组件根据注册事件,控制相关按钮显隐

目标效果 我不注册事件&#xff0c;那么就不显示相关的按钮 注册了事件&#xff0c;才会显示相关内容 实现思路 组件在 mounted 的时候可以拿到父组件注册监听的方法 拿到这个就可以做事情了 mounted() {console.log(this.$listeners, this.$listeners);this.show.search !…

四:工具、环境准备-compute node

一&#xff1a;工具、环境准备-controller node 二&#xff1a;OpenStack环境准备-controller node 三&#xff1a;安装服务-controller node 四&#xff1a;工具、环境准备-compute node 五&#xff1a;OpenStack环境准备-compute node 六&#xff1a;安装服务-compute node 七…

Vue3在PC端接入萤石云监控

参考文档&#xff1a;文档概述 萤石开放平台API文档 1.安装依赖 npm i ezuikit-js 2.封装组件 src/components/PlayerVideo/index.vue <template><div id"video-container" style"width: 100%;"></div> </template> <scrip…

快排详解(4种写法:霍尔/挖坑法/双指针/非递归)

//本文所写快排的结果都是从小到大排序 思路 快排就是把数组的第一个值记为key,然后定义两个指针,一个叫begin,一个叫end. begin指针从数组的头部出发,寻找比key大的值;end指针从数组的尾部出发,寻找比key小的值; 然后交换begin和end的值 ......最后,begin和end相遇就停下…

ESP32驱动PCM5102A播放SD卡音频

文章目录 简介模块参数功能框图引脚定义通信接口和通信数据格式通信流程引脚接线ESP32和PCM5102AESP32和SD模块 主要代码spi.hSD.hAudio.h实验效果总结 简介 PCM5102A模块是一款立体声DAC模块、音频数模转换器&#xff0c;内部集成了PCM5102芯片。PCM5102芯片是集成了立体声模…