Linux三剑客-sed、awk、egrep(上)

一、知识梗概

二、正则表达式

定义:正则表达式是一种强大的文本处理工具,用于在文本中搜索符合特定模式的字符串。它由一系列特殊字符和普通字符组成,可以定义复杂的搜索模式。正则表达式被广泛应用于各种编程语言和文本处理工具中。

简单来说就是文本匹配:可以根据你定义的表达式抓取到你想要的东西,实现文本匹配、文本查找以及文本替换等功能的一种工具。

1、通配符

*    匹配0个或者多个字符

?    匹配一个字符
[...]    匹配范围内的任意一个字符  
    --> [0-9] 0到9任意一个字符
    --> [^0-9] 不属于0-9的任意字符
    --> [abc] 取a或者b或者c
    --> [a-z]取字母a-z之间的字符
{}    组合匹配

举例使用:

#使用{}组合匹配符,中间用逗号隔开,匹配相应数字
[root@localhost 10-17]# mkdir yuhengxing{1,6,99}
[root@localhost 10-17]# ls
yuhengxing1  yuhengxing6  yuhengxing99
#使用{11..15}表示匹配11-15的所有数字
[root@localhost 10-17]# mkdir yuhengxing{11..15}
[root@localhost 10-17]# ls
yuhengxing1   yuhengxing12  yuhengxing14  yuhengxing6
yuhengxing11  yuhengxing13  yuhengxing15  yuhengxing99

2、元字符

有特殊含义的字符,可以表示其他含义如:!  $  ^等

后面会举例子用到,和egrep一起使用。

三、egrep

1、grep和egrep的区别

egrep比grep更好用,grep支持基本正则,egrep还支持扩展正则(有:|  {}  )

比如,egrep可以解析管道符号:
egrep会将“|”理解为“或者”,查找xiaomi或者huawei的文本:

#这里的 “-i”选项表示忽略大小写
#egrep就能理解管道符号,解析为“或者”
[root@localhost 10-17]# egrep -i "xiaomi|huawei" mobile_phone.txt 
xiaomi	HUAWEI
VIVO	huawei

grep就不能理解“|”,而是忽略大小写,查找xiaomi|huawei整体,所以没有找到任何东西:

[root@localhost 10-17]# grep -i "xiaomi|huawei" mobile_phone.txt 
[root@localhost 10-17]# 

要想使得grep与egrep效果相同,则:

grep -E = egrep

2、egrep的选项

-i         忽略大小写

-o        仅仅展示要查找的内容

-n        显示行号

-v        取反,对整行取反匹配

-i在上面使用过,所以这里举例说明下面三个怎么使用:

#这里的 mobile_phone.txt 文本中,VIVO huawei这个是同一行的内容,所以都显示出来了
[root@localhost 10-17]# egrep -i "xiaomi|huawei" mobile_phone.txt 
xiaomi	HUAWEI
VIVO    huawei
#加上-o选项之后,同一行的VIVO就不在展示出来
[root@localhost 10-17]# egrep -o -i "xiaomi|huawei" mobile_phone.txt 
xiaomi
HUAWEI
huawei

#获取passwd中含有“root”的内容,-n就显示在哪一行
[root@localhost 10-17]# cat /etc/passwd |egrep "root" -n
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
#第一行和第十行有root

#所有没有root的行都会被输出:
[root@localhost 10-17]# cat /etc/passwd |egrep "root" -v

3、正则表达式和egrep的使用

正则的分类:

基本正则:^    $    .    *
扩展正则:|    +    ?    {}

感受一下正则与egrep的使用:

#查找网址正则:
[root@localhost 10-17]# cat web.txt |egrep "[a-Z]+://[0-z]+\.[0-Z]+\.[0-Z]+"
#查找邮箱正则:
[root@localhost 10-17]# cat mail.txt |egrep "[0-Z_]+@[0-Z]+\.[a-Z]+"
#查找ip的正则:
[root@localhost 10-17]# cat /var/log/secure |egrep "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9])"

扩展正则:
?    0个或者1个前面的字符:
*    0个或者多个前面的字符:
+    至少一个前面的字符
{n}    至少出现n次前面的字符
{n1,n2}    至少出现n1到n2次前面的字符

^$    代表空行
.    代表任意单个字符
.*    代表所有字符
*    代表前面的字符出现0个或多个

[root@localhost 10-17]# echo "aaaaabbbbbbccc"|egrep "b*"
aaaaabbbbbbccc
[root@localhost 10-17]# echo "aaaaabbbbbbccc"|egrep ".*"
aaaaabbbbbbccc

如有问题欢迎评论区或后台留言

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

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

相关文章

(2024,自回归,下一尺度预测,VQGAN)视觉自回归建模:通过下一尺度预测的可扩展的图像生成

Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 基础:通过下…

OpenAI反超Claude3,GPT4.5-Turbo正式版发布,AI王座再次易主

没想到,仅仅过了两个月,全球最强AI的宝座又易主了! 几个月前,Claude3 Opus全面超越GPT-4,全球的网友纷纷抛弃GPT,投向Claude3的怀抱,并纷纷分享Claude3带来的惊艳体验。 如今,Open…

Win10 使用Telnet

命令行 telnet 127.0.0.1 80 调试是否能连接服务 输入exit 回车即可退出 相比于ping的不同

k8s:kubectl 命令设置简写启用自动补全功能

k8s:kubectl 命令设置简写&启用自动补全功能 1、设置kubectl命令简写2、启用kubectl自动补全功能 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(K8s)是一个强大的容器编排平台&#xff0…

生活中的数学 --- 等额本息贷款和等额本金贷款的月供应该怎么算?

等额本息贷款和等额本金贷款的月供应该怎么算? 从一个例子开始,假设我要从银行贷款36万(即,本金),银行给出的贷款年利率是12%(月利率为年利率除以12),贷款半年(6个月),按月还款,分6期还完。 问分…

5、JVM-G1详解

G1收集器 -XX:UseG1GC G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域(Region),JVM目标…

Open CASCADE学习|实现Extrude功能

首先定义了一些基本的几何元素,如线、圆和平面,然后使用makeExtrudebydir函数来对一个面进行挤出操作。下面是详细过程: 定义Extrude函数:makeExtrudebydir函数接受一个TopoDS_Shape对象和一个gp_Vec对象作为参数。TopoDS_Shape是…

【数据挖掘】实验6:初级绘图

实验6:初级绘图 一:实验目的与要求 1:了解R语言中各种图形元素的添加方法,并能够灵活应用这些元素。 2:了解R语言中的各种图形函数,掌握常见图形的绘制方法。 二:实验内容 【直方图】 Eg.1&…

单路高清HDMI编码器JR-3211HD

产品简介: JR-3211HD单路高清HDMI编码器是专业的高清音视频编码产品,该产品具有支持1路高清HDMI音视频采集功能, 1路3.5MM独立外接音频输入,编码输出双码流H.264格式,音频MP3/AAC格式。编码码率可调,画面质…

CASA(Carnegie-Ames-Stanford Approach)模型原理及实践应用

植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力(Net Primary Productivity, NPP)是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。植被NPP是表征陆地生态系统功能及可…

Linux登录访问限制

Linux系统下,用户密码的有效期可以通过编辑/etc/login.defs文件控制;密码复杂度规则设定需要通过/etc/pam.d/system-auth文件控制;登录失败次数限制通常由/etc/pam.d/login文件限制,可使用pam_tally2模块进行设置。 Linux系统下的…

Linux的学习之路:10、进程(2)

摘要 本章主要是说一下fork的一些用法、进程状态、优先级和环境变量。 目录 摘要 一、fork 1、fork的基本用法 2、分流 二、进程状态 三、优先级 四、环境变量 1、常见环境变量 2、和环境变量相关的命令 3、通过代码如何获取环境变量 五、导图 一、fork 1、fork…

Houdini笔记操作技巧_集锦

个人记录下,谨防遗忘。同时丰富下Hou的中文搜素环境。 1、自定义启动界面 ① 设置完界面后,保存自定义界面(Save Current Desktop As...) ② Edit-->Preferences-->General UIInterface-->Startup in Desktop&#xff1…

换手机了怎么重新设置Microsoft Authenticator验证?

进入到这个页面 https://mysignins.microsoft.com/security-info 选择安全信息

顺序表实战——基于顺序表的通讯录

前言:本篇文章主要是利用顺序表作为底层, 实现一个通讯录。偏向于应用, 对于已经学习过c的友友们可能没有难度了已经。没有学习过c的友友, 如果顺序表不会写, 或者说没有自己实现过, 请移步学习顺序表相关内…

手机数据恢复工具

下载地址:手机数据恢复工具.zip Android/HarmonyOS 文件误删是日常使用电子设备时经常遇到的问题,也许一不小心就就可能会误删。 俗话说:数据无价,一但想要找回一些被删除的文件,就需要耗费大量的精力和财力来恢复文…

【网站项目】面向企事业单位的项目申报小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

【电控笔记5】电流环速度环三环参数整定

旋转坐标系下的电压方程,由id和iq计算出ud和uq Lq:q轴电感 Ld:d轴电感 输入是电流,输出是电压? 内嵌式pmsm(ipmsm)模型建立: 其中: λf是转子磁场在定子绕组所产生的磁通链,为一常数,在psms中转子磁场非常稳定几乎不变。 ipmsm转矩方程式: 对永磁同步马达而言,使…

Niobe开发板OpenHarmony内核编程开发——定时器

本示例将演示如何在Niobe Wifi IoT开发板上使用cmsis 2.0 接口进行定时器开发 Timer API分析 osTimerNew() /// Create and Initialize a timer./// \param[in] func function pointer to callback function./// \param[in] type \ref osTimerOnce …

ELK日志分析系统+Filebeat

目录 一、Filebeat介绍 1、Filebeat简介 2、Filebeat的工作方式 3、filebeat工作流程 4、Filebeat的作用 5、filebeat的用途 1.为什么要用filebeat来收集日志?为什么不直接用logstash收集日志? 2.filebeat和logstash的区别 二、部署(ELFK)Fileb…