正则表达式;grep、sed、awk、soft、uniq、tr 详解

news2024/10/10 18:22:15

正则表达式

概念

正则表达式(Regular Expression,常简写为regex、regexp或RE)是一种强大的文本处理工具,它使用一种特殊的字符序列来帮助用户检查一个字符串是否与某种模式匹配。

标准正则表达式

首先安装正则表达式pcre库

创建一个用于测试的文件

内容如下,复制到测试文件中

he was short and fat.
he was weating 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.
PI=3.14
a wood cross!
Actions speak louder than words

#woood #
#woooooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.

grep

通过grep命令来精确查找该文件带有the的行,-n选项:显示行号

加上-i选项,不区分大小写

在文件中查找包含"short"或者"shirt"的行,并显示它们的行号

开头和结尾过滤(^、$)

查找该文件中前一个字符不是w并以oo结尾的行,并显示行号

^:取反

通过指定小写字母a-z和大写字母A-Z,筛选 不以大写或小写字母开头且包含oo的行

也可以去掉^符号,显示以大写或小写字母开头且包含oo的行

显示整行的开头是小写或大写字母 且后方跟着oo字符的行

过滤出任何字符结尾的行,在这里,. 被识别为通配符了,所以使用转义符来识别

在.前面加上转义符,过滤出只有以.结尾的行

显示空白行

或加上-v选项取反,显示除了空白行的所有行

如果要过滤一个配置文件的所有注释行,就通过^#来获取#开头的行,再添加-v取反,就实现显示#开头以外的行

再添加管道符 | 过滤空白行,就实现了过滤文件内注释和空白行的效果

通配符

因为.是通配符,匹配任何字符,所以通过w..d来匹配 以w开头d结尾 并且中间包含两个字符 的行

显示 以w开头跟着一个或多个任意字符且以d结尾单词的行

.* —— 匹配任意数量的任意字符

过滤数字

使用 [0-9] 筛选,显示包含单个都是0-9数字的行

使用 [0-9][0-9] 匹配两个连续为数字0-9的字符的行,下面这张图片中,第六行的3没有被匹配到,因为是单个字符

过滤连续字符

通过 字符\{数量\} 来过滤连续两个o出现的行,每个大括号前要使用转义符

过滤 以wo开头 字符o后连续2-5个o,且以d结尾的行

'wo\{最小值,最大值\}'

如果将最大值空着,只在最小值后跟上逗号,表示2个以上连续字符

这里表示 以wo开头 后面并连续2个以上o字符 且以d结尾

扩展正则表达式

使用 egrep 命令

可以在表达式内直接用管道符增加过滤条件

下方示例命令表示:过滤和显示 /etc/ssh/sshd_config 文件中非空行且不以 # 开头的行

sed

过滤、编辑

过滤

在这个命令中,-n 参数会禁止默认的打印行为,而 p(print) 命令会遍历打印与模式匹配的行。因此,整个命令其实等同于 cat test,它会打印出 test 文件的全部内容。

指定数字 实现遍历打印第几行内容

遍历打印输出奇数行

遍历输出偶数行

第1-10行的奇数行

第5行到结尾的偶数行

遍历打印输出包含the的行

以#开头的行和以P开头的行 遍历输出

以4结尾的行 和以.结尾的行(需要转义符转义)

删除空行并输出出来,这种编辑并不会影响文件本身的内容,只是把指定过滤的内容输出出来

删除小写字母a-z开头的行 遍历输出

删除第三行内容并遍历打印输出

显示行号并删除第三行内容 遍历打印输出

替换文本中的第一个匹配项,只将每行的第一个the 替换为TTT 后续的the不进行操作

替换每行的所有the为TTT

只替换每行的第2哥the为TTT

编辑

加上 -i 选项永久修改文件中每行第2个the为TTT

迁移

将test.txt文件中包含the的行存储在剪贴板中,再将剪贴板中的内容追加到末尾最后一行

将第1行到第5行的内容剪贴到剪贴板中,追加剪贴板内容到第10行之后

将指定内容插入到第一行

将指定内容追加到第一行之后

修改内容

如果要在脚本中修改指定文件内容就可以像下方命令一样通过 -i 替换

awk

通过grep筛选出Mem的行,再通过awk提取这一行的第7列

使用 -F 选项指定:为分隔符,输出第1列

使用print或print $0 输出整个文件的内容

输出第3行到第10行内容

使用逻辑运算符,来输出指定行内容

输出所有偶数行(行号 % 2 = 0)

输出所有奇数行(行号 % 3 = 1)

输出以sshd开头的行

输出/etc/passwd文件中以nologin结尾的行

awk常见选项

选项

说明

$0

表示整个当前行

$1

每行第一个字段

NF

字段数量变量

NR

每行的记录号,多文件记录递增

FNR

与NR类似,不过多文件记录不递增,每个文件都从1开始

\t

制表符

\n

换行符

FS

 BEGIN时定义分隔符

RS

输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)

~

匹配,与==相比不是精确比较

!~

不匹配,不精确比较

==

等于,必须全部相等,精确比较

!=

不等于,精确比较

&&

逻辑与

||

逻辑或

+

匹配时表示1个或1个以上

/[0-9][0-9]+/

两个或两个以上数字

/[0-9][0-9]*/

 一个或一个以上数字

OFS

输出字段分隔符, 默认也是空格,可以改为制表符等

ORS

输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕

-F'[:#/]'

定义三个分隔符

soft

排序命令

以开头a-z排序内容

加上 -r 选项实现反向排序

uniq

去重命令

创建一个文件,编辑如下内容

使用uniq命令实现去重效果

-c:显示行号

-d:把重复的字符串输出S

tr

字符控制

通过 -s 选项,实现字符串去重

通过 -d 选项实现字符串删除指定字符

去重并且将大写字母转换为小写字母

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

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

相关文章

10--7层负载均衡集群

前言:动静分离,资源分离都是在7层负载均衡完成的,此处常被与四层负载均衡比较,本章这里使用haproxy与nginx进行负载均衡总结演示。 1、基础概念详解 1.1、负载均衡 4层负载均衡和7层负载均衡是两种常见的负载均衡技术&#xff…

黑马程序员——Spring框架——day08——maven高级

目录: 分模块开发与设计 分模块开发的意义 问题导入模块拆分原则分模块开发(模块拆分) 问题导入创建Maven模块书写模块代码通过maven指令安装模块到本地仓库(install指令)依赖管理 依赖传递 问题导入可选依赖 问题导入…

这就是人性的丑恶,很残酷但很现实

这些年我喜欢跟垃圾撕破脸,包括垃圾亲戚,我是不会跟你讲什么感情的,该滚蛋就滚蛋。我最不喜欢听什么今日留一线,日后好相见。 之前我还不懂事的时候,就有那种亲戚叫我帮他介绍工作,我照做了。 结果&#xf…

实现批量自动化电商数据采集|商品详情页面|店铺商品信息|订单详情数据

电商数据采集是指通过技术手段获取电商平台上的商品信息、店铺信息和订单信息等数据。这些数据可以用于市场分析、竞品分析、用户行为分析等。 商品详情页面是指电商平台上展示商品详细信息的页面,包括商品名称、价格、图片、描述、评价等信息。通过采集商品详情页…

Word如何在页眉中插入和删除横线

你平常是否遇见到Word的页眉中有一条横线,怎么也删不了!!! 今天刘小生分享如何在页眉中插入和删除横线,我们一起操练起来吧! 1、Word页眉插入横线 选择【插入】-【页眉页脚】,在“页眉页脚”…

【arm扩容】新硬盘挂载操作说明

背景: 未经过扩容的arm设备不满足移植大镜像的条件。 需求: 我们要对arm设备扩容,现在要将一个500G的硬盘挂进去。而且要按照老arm设备的挂法,保持相同的目录结构。配置这台机器。 下面老arm设备的硬盘挂载相关信息。 lsblk …

Open3D 点云的体素化

目录 一、概述 1.1概念 1.2 应用场景 二、代码实现 三、实现效果 3.1原始点云 3.2体素化后点云 一、概述 1.1概念 体素化(Voxelization)是将三维空间数据(例如点云)转换为体素网格(Voxel Grid)的过…

<电力行业> - 《第2课:电力行业的一会两网》

1 一会 一会指的是电监会,全称是国家电力监管委员会。根据国务院批准《国家电力监管委员会职能配置内设机构和人员编制规定》,国家电力监管委员会按照国务院授权,行使行政执法职能,依照法律、法规统一履行全国电力监管职责。 2 …

使用 Splashtop REST API 简化远程管理

Splashtop 的 REST API 可无缝提高生产力和简化集成,使用户能够自动执行任务、定制工作流程,轻松与现有系统集成。 在与客户的合作中,我们对其需求和痛点有了更深入的了解,尤其在有利于实现自动化的领域。在本文中,我…

手机照片回收站无法恢复图片怎么办?2个措施,找回丢失的相册

我们的照片和视频存储在各种设备中,其中包括我们的智能手机,但有时候我们可能会不小心删除这些重要的数据。这时,手机照片回收站就显得尤为重要。然而,即使有回收站,我们也可能遇到一些问题,例如回收站中的…

【PyQt5】一文向您详细介绍 setSpacing() 的作用

【PyQt5】一文向您详细介绍 setSpacing() 的作用 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕&am…

滑轨平行度和光路平行分别对测径仪的影响?

关键字:测径仪滑轨平行度,测径仪平行光路,测径仪发射器,测径仪接收器, 测径仪是一种用于测量物体直径的精密仪器,通常应用于工业自动化领域,比如钢铁、电缆、塑料管材等生产线上的在线尺寸监测。测径仪的测量精度会受到多种因素的影响,其中包…

数据结构-顺序表的交换排序

顺序表的初始化 const int M 505;typedef struct{int key; //关键元素int others; //其他元素 }info;typedef struct{info r[M1]; int length(); //表长 }SeqList,*PSeqList; 冒泡排序 分析: 顺序表的冒泡排序和数组的冒泡排序的…

XSS漏洞—XSS平台搭建与打cookie

一、跨站脚本攻击漏洞接收平台 推荐两个: 1)xsser : XSS平台 - (支持http/https)XSS Platform 2)蓝莲花 :GitHub - firesunCN/BlueLotus_XSSReceiver xsser: BlueLotus&#xff…

Deepl网页版使用方法

Deepl网页版科学使用方法 Deepl 网页版使用方法重要链接使用方式一、在没有使用插件前的Deepl界面二、安装DeepL.Crack.v1.2.7插件三、插件安装后打开[Deepl官网](https://www.deepl.com/zh/translator)即可四、在翻译整篇文章的权限怎么设置 Deepl 网页版使用方法 重要链接 …

轻松掌握:工科生如何高效阅读国际期刊和撰写论文(下)

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

最长上升子序列模型

此模型属于线性dp的分类: 基础知识 1.最长上升子序列 首先思考暴力的解决题目的方式:可以通过dfs指数型枚举,枚举出所有的序列,然后判断是否合理,然后找到最长的上升子序列的长度。 然后我们想如何优化&#xff1a…

计算机工具软件安装攻略:Chrome浏览器下载安装及使用

1 Chrome简介 Chrome是谷歌公司开发的一款免费网页浏览器它快速、稳定、安全拥有简洁流畅的界面和丰富的应用程序内置了强大的谷歌搜索引擎。Chrome使用Blink浏览器引擎和V8 JavaScript引擎支持多种插件和扩展程序让浏览网页更便捷。它可以与Android手机良好同步支持跨设备浏览…

Rust编写测试及控制执行

编写测试及控制执行 在 Rust 中,测试是通过函数的方式实现的,它可以用于验证被测试代码的正确性。测试函数往往依次执行以下三种行为: 设置所需的数据或状态运行想要测试的代码判断( assert )返回的结果是否符合预期 让我们来看看该如何使…

Prometheus:开源监控解决方案的力量

前言 在当今高度数字化和云原生应用的时代,监控系统是确保系统稳定性和性能的关键组成部分。而 Prometheus 作为一种开源的监控解决方案,正在成为越来越多企业和开发者的首选。本文将深入探讨 Prometheus 的特性、优势以及如何利用它来构建强大的监控系…