Linux学习之正则表达式元字符和grep命令
cat /etc/redhat-release
看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)
,uname -r
可以看到内核版本是3.10.0-957.21.3.el7.x86_64
。
正则表达式是一种搜索字符串的模式,通俗点理解,也就是普通字符和元字符共同组成的字符集合匹配模式。正则表达式的主要作用是文本搜索和字符串处理。
正则表达式有两种:基本正则表达式;扩展正则表达式。
元字符就是一些具有特殊含义的字符,用于表示某种特定的字符类型或者行为,它的含义就不是显示在计算机上的含义了。基本正则表达式具有如下的元字符:
元字符 | 名称 | 作用 | 举例 |
---|---|---|---|
. | 点 | . 匹配除换行符之外的任意一个字符,只能匹配一个字符 | 234.6 ,就可以23416 、23426 、23436 、23446 、23456 、23466 、23476 、234a6 、234b6 等,这里有点多,不一一列举了 |
* | 星号 | 匹配* 前一个字符或者一个正则表达式0至若干次 | 234* ,就可匹配23 +零个4或者多个4 ,比如23 、234 、2344 、234444 、234444... ,而f[ae]*ll 会匹配fall 、fell 、faall 、faa...ll 、fae...ll 、feall 、fea...ll 、feell 、fee...ll |
^ | 脱字符,插入符号,折字符 | 1.匹配一行的开始 2.否定正则表达式中一个字符串的意思 | 1.^123 会匹配每行以123 开头的字符串,2.[^a] 会匹配没有a 的字符串 |
$ | 美元符号 | 匹配行尾 | 456$ 会匹配以456 结尾的字符串 |
[] | 方框号 | 匹配方括号内指定的字符集中的一个字符 | [an] 会匹配a 和n ,[b-d] 会匹配b 、c 和d 三个字符 |
\ | 反斜线 | 转义一个特殊的字符,使这个字符得到字面意义的解释 | \^ 就表示字符串^ ,不再表示匹配一行开始的意义,而\. 就是表示字面含义的. ,不再能够匹配任意字符 |
\<\> | 转义尖括号 | 标记单词边界 | 尖括号必须是转义的,否则它们只有字符的字面含义。\<you\> 就只能匹配you ,不能匹配your |
grep
grep
命令在 Linux 中用于在文件中搜索特定的文本模式。
接下来使用grep
来验证上边元字符的使用实例:
先使用下边的命令把一下字符串写到当前greptest.txt
文件里边:
echo "god is good" >> greptest.txt
echo "good" >> greptest.txt
echo "good learning" >> greptest.txt
echo "a good learner" >> greptest.txt
echo "gold" >> greptest.txt
echo "1. gold jewelry" >> greptest.txt
echo "2. gold coins" >> greptest.txt
echo "3. gold medal" >> greptest.txt
echo "4. gold standard" >> greptest.txt
echo "5. gold mine" >> greptest.txt
echo "6. gold rush" >> greptest.txt
echo "7. goldsmith" >> greptest.txt
echo "8. gold bar" >> greptest.txt
echo "9. gold leaf" >> greptest.txt
echo "10. gold price" >> greptest.txt
echo "11. gold reserves" >> greptest.txt
echo "12. gold market" >> greptest.txt
echo "13. gold investment" >> greptest.txt
echo "14. gold necklace" >> greptest.txt
echo "15. gold watch" >> greptest.txt
echo "1 gold jewelry" >> greptest.txt
echo "2 gold coins" >> greptest.txt
echo "3 gold medal" >> greptest.txt
echo "4 gold standard" >> greptest.txt
echo "5 gold mine" >> greptest.txt
echo "6 gold rush" >> greptest.txt
echo "7 goldsmith" >> greptest.txt
echo "8 gold bar" >> greptest.txt
echo "9 gold leaf" >> greptest.txt
echo "10 gold price" >> greptest.txt
echo "11 gold reserves" >> greptest.txt
echo "12 gold market" >> greptest.txt
echo "13 gold investment" >> greptest.txt
echo "14 gold necklace" >> greptest.txt
echo "15 gold watch" >> greptest.txt
cat -n greptest.txt
可以把行号在前,内容在后显示出来。
grep "." greptest.txt
发现全部匹配了,可以看到所有的字符都显示红色了,需要注意的是grep
会整行显示,就是说一行中只有有匹配的字符串,那么文件中这一行字符串都会显示,但是匹配的字符串会以红色显示。
grep -n "g.d" greptest.txt
可以看到匹配greptest.txt
里边的god
,grep "g..d" greptest.txt
匹配的是good
和gold
,注意冒号之前的绿色数字是文件内容里边对应的行号。
grep -n "go*d" greptest.txt
可能匹配到god
和good
,使用cat -n greptest.txt | grep "go*d"
也可以匹配到god
和good
,并且把内容中的行号也显示出来。这种显示格式有些不一样。
grep -n "^12" greptest.txt
可以把以12开头的字符串匹配上,同样的,cat greptest.txt | grep "^12"
,也可以转换格式输出,但是可以实现相同的匹配功能,cat -n greptest.txt | grep "^12"
就无法进行匹配了,因为cat -n
在使用时会先输出多个空格
然后在输出内容行号,之后再输出文件里边的内容。
grep "e$" greptest.txt
可以匹配以e
结尾的字符串,grep "good$" greptest.txt
可以匹配以good
结尾的字符串。
grep -n go[ol]d greptest.txt
能够匹配good
和gold
,grep -n "1[234]" greptest.txt
能够匹配12
、13
和14
。
echo "$ ." >> greptest.txt
echo "*" >> greptest.txt
往greptest.txt
里边写入$ .
和*
。
cat -n greptest.txt
看一下内容。
grep "\$ \." greptest.txt
能够匹配到$ .
,grep -n "\*" greptest.txt
能够匹配到*
。
grep -n "goo" greptest.txt
是匹配含有goo
的字符串,而grep -n "\<goo\>" greptest.txt
是完全匹配goo
的字符串。
此文章为8月Day 4学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。
相关文章:

Linux学习之正则表达式元字符和grep命令
cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core),uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64。 正则表达式是一种搜索字符串的模式,通俗点理解,也就是普通字符和元字符共同组成的字符集合匹…...

熟练掌握ChatGPT解决复杂问题——学会提问
目录 引言 一、5W1H分析法 1. 简单的问题(what、where、when、who) 2.复杂的问题(why、how) 2.1 为什么(Why)——原因 2.2 方式 (How)——如何 二、如何提问得到更高质量的答案…...

JVM之类加载与字节码
1.类文件结构 一个简单的HelloWorld.Java package cn.itcast.jvm.t5; // HelloWorld 示例 public class HelloWorld { public static void main(String[] args) { System.out.println("hello world"); } }编译为 HelloWorld.class 后的样子如下所示: […...
【博客688】如何实现keepalived vip监控与告警
如何实现keepalived vip监控与告警 1、使用的exporter https://github.com/mehdy/keepalived-exporter2、metrics里的状态的具体含义 注意:存状态的字符串的每个状态的值其实是跟状态在数组中的索引相对应的 具体参考这里: https://github.com/mehdy…...
[QT编程系列-39]:用户界面UI - 样式表QSS与样式文件快速入门
目录 1. 概述 2. CSS 3. QSS示例 4. QT样式表文件使用方法与步骤 5. QT内置样式 6. QT常见基本样式 1. 概述 Qt提供了一种称为Qt样式表(Qt Style Sheets)的机制,可以用于自定义和美化Qt应用程序的用户界面(UI)。…...

机器学习和深度学习简述
一、人工智能、机器学习、深度学习的关系 近些年人工智能、机器学习和深度学习的概念十分火热,但很多从业者却很难说清它们之间的关系,外行人更是雾里看花。概括来说,人工智能、机器学习和深度学习覆盖的技术范畴是逐层递减的,三…...

diffusion model2 扩散模型的文本信息融合、交叉注意力机制、lora
前言 在上一篇文章中,我们剖析了diffusion model的原理,而在这一篇文章中,我们探讨与扩散模型有关的其他话题,包括扩散模型的unet是如何在推理噪声的过程中,融入文本信息的考量?其原理为交叉注意力机制&am…...

数据结构——二叉树
本章代码仓库:堆、二叉树链式结构 文章目录 🍭1. 树🧁1.1 树的概念🧁1.2 树的结构 🍬2. 二叉树🍫2.1 二叉树的概念🍫2.2 特殊的二叉树🍫2.3 二叉树的性质🍫2.4 二叉树的存…...

架构训练营学习笔记:5-3接口高可用
序 架构决定系统质量上限,代码决定系统质量下限,本节课串一下常见应对措施的框架,细节不太多,侧重对于技术本质有深入了解。 接口高可用整体框架 雪崩效应:请求量超过系统处理能力后导致系统性能螺旋快速下降 链式…...

【笔记】湖仓一体架构演进与发展
https://www.bilibili.com/video/BV1oF411F7rQ/?spm_id_from333.788.recommend_more_video.0&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf...

政务云建设与应用解决方案[42页PPT]
导读:原文《政务云建设与应用解决方案[42页PPT]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式: 如需获取完…...

20天突破英语四级高频词汇——第①天
20天突破英语四级高频词汇~第一天加油(ง •_•)ง💪 🐳博主:命运之光 🌈专栏:英语四级高频词汇速记 🌌博主的其他文章:点击进入博主的主页 目录 20天突破英语四级…...

【网络基础实战之路】基于MGRE多点协议的实战详解
系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…...

K8s实战入门(三)
文章目录 3. 实战入门3.1 Namespace3.1.1 测试两个不同的名称空间之间的 Pod 是否连通性 3.2 Pod3.3 Label3.4 Deployment3.5 Service 3. 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。 3.1 Namespace Namespace是kuber…...

Linux-centos花生壳实现内网穿透
Linux-centos花生壳实现内网穿透 官网教程 1.安装花生壳 下载网址 点击复制就可以复制下载命令了 wget "https://dl.oray.com/hsk/linux/phddns_5.2.0_amd64.rpm" -O phddns_5.2.0_amd64.rpm# 下载完成之后会多一个rpm文件 [rootlocalhost HuaSheng]# ls phddns_…...
Jackson类层次结构中的一些应用(Inheritance with Jackson)
Have a look at working with class hierarchies in Jackson. 如何在Jackson中使用类层次结构。 Inclusion of Subtype Information There are two ways to add type information when serializing and deserializing data objects, namely global default typing and per-cl…...

Python求均值、方差、标准偏差SD、相对标准偏差RSD
均值 均值是统计学中最常用的统计量,用来表明资料中各观测值相对集中较多的中心位置。用于反映现象总体的一般水平,或分布的集中趋势。 import numpy as npa [2, 4, 6, 8]print(np.mean(a)) # 均值 print(np.average(a, weights[1, 2, 1, 1])) # 带…...

SQL ASNI where from group order 顺序
SQL语句执行顺序: from–>where–>group by -->having — >select --> order 第一步:from语句,选择要操作的表。 第二步:where语句,在from后的表中设置筛选条件,筛选出符合条件的记录。 …...
springboot(39) : RestTemplate完全体
HTTP请求调用集成,支持GET,POST,JSON,Header调用,日志打印,请求耗时计算,设置中文编码 1.使用(注入RestTemplateService) Autowiredprivate RestTemplateService restTemplateService; 2.RestTemplate配置类 import org.springframework.context.annotation.Bean; import org.…...

python中计算2的32次方减1,python怎么算2的3次方
大家好,给大家分享一下怎么样用python编写2的n次方,n由键盘输入,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! ---恢复内容开始--- 1、内置函数:取绝对值函数abs() 2、内置函数:取最大值max()ÿ…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...