RHCE---正则表达式
文章目录
-
目录
文章目录
前言
一. 文本搜索工具
二.正则表达式
元字符
^行首与$行尾
点(.) 与星号(*)
扩展正则
总结
前言
正则表达式是文本三剑客中及其重要的一环,称之为灵魂也不为过,到底什么是正则表达式呢,让我们一起来了解以下!
一. 文本搜索工具
- grep是linux中一种强大的文件搜索过滤工具,可以按照正 则表达式检索文件内容,并把匹配的结果显示到屏幕上 (匹配的内容会标红)
- grep可以在一个或多个文件中检索,如果条件 中包含了空格,需要使用双引号引起 工作结果:如果搜索成功则返回0状态码,否则为1状态码
格式:
grep -参数 "条件" 文件名 参数:
-i 忽略大小写
-c 统计匹配的行数
-v 取反,不显示匹配的行
-w 匹配单词
-E 等价于egrep,即启用扩展正则表达式
-n 显示行号
-rl 将指定目录内的文件打印
-A数字 匹配行及以下n行
-B数字 匹配行及以上n行
-C数字 匹配行及上下n行
-q 静默模式,没有任何内容输出,使用$?来判断是
否执行成功
-o 只显示匹配的内容
案列:
案例:检索不能登录的账号名
[root@server ~]# grep -n "/sbin/nologin" /etc/passwd
#检索能登录的使用grep -vn
- #检索文件中包含sshd的行及以上5行
[root@timeserver ~]# grep -nB5 "sshd" /etc/passwd
- 检索 文件系统信息中 / 目录
[root@timeserver ~]# df -h | grep "/"
- #grep是能进行模糊匹配,精确匹配需要使用-w
#grep是能进行模糊匹配,精确匹配需要使用-w
[root@timeserver ~]# df -h | grep -w "/"
- #-o参数只显示匹配的内容
#-o参数只显示匹配的内容
[root@timeserver ~]# df -h | grep -wo "/"
/
二.正则表达式
- 在Shell脚本中,正则表达式是一种强大的文本处理工具,用于匹配、搜索和替换字符串
元字符
元字符 | 作用 |
.(点号) | 匹配任意一个字符 |
* | 匹配前面的字符0次或多次 |
{m,n} | 将前一项字符重复匹配m-n次 |
? | 匹配前一个字符出现0次或1次。 |
^ | 匹配字符串的开头。 |
$ | 匹配字符串的结尾。 |
[] | 匹配字符[]集中的任意一个字符 |
[^] | 匹配除字符集中的任意一个字符以外的字符。^[]:以...开头 |
() | 表示一个子表达式,可以用于分组、捕获或引用。 |
词首【\或\b】 和词尾锚定【\>或者\b】 | 用于界定边界,仅匹配锚定词之间的内容 |
\ | 用于转义元字符或特殊字符 |
POSIX字符类
- [:alnum:] 匹配任意字母或数字。
- [:alpha:] 匹配任意字母。
- [:blank:] 匹配空格或制表符。
- [:cntrl:] 匹配控制字符。
- [:digit:] 匹配数字。
- [:graph:] 匹配非空白字符。
- [:lower:] 匹配小写字母。
- [:print:] 匹配任意可打印字符。
- [:punct:] 匹配标点符号。
- [:space:] 匹配任意空白字符。
- [:upper:] 匹配大写字母。
- [:xdigit:] 匹配十六进制数字。
案例:[ab] : 检索包含a或包含b的行信息,[ ] 中只能表示一个内容
# 检索包含d或者D的行信息
[root@server ~]# grep -n [dD] /etc/passwd
案例:[^ ] : 根据关键字检索后反向显示(反向着色)
# 检索不包含字母o的行信息
[root@server ~]# grep -n [^o] /etc/passwd
# 检索不以r开头且包含oot的行信息
[root@server ~]# grep -n [^r]oot /etc/passwd
- [-] : 表示范围,如:[0-9] [a-z] [A-Z] [a-zA-Z]
# 检索包含7-9的行信息
[root@server ~]# grep -n [7-9] /etc/passwd
# 检索包含数字和字母的行信息
[root@server ~]# grep -n [0-9a-zA-Z] /etc/sos/sos.conf
-
^行首与$行尾
# 检索root开头的行信息 [root@server ~]# grep -n ^root /etc/passwd
- 检索以"[" 开头的行信息
# 检索以"[" 开头的行信息
[root@server ~]# grep -n "^\[" /etc/sos/sos.conf
注意: 需要过滤元字符时需要加 / 进行转译,去除元字符在正则中的功能,变为普通字符
- 检索空白行
[root@server ~]# grep -n "^$" /etc/sos/sos.conf
- # 检索以r开头或o开头或t开头,独立对待
[root@server ~]# grep -n ^[root] /etc/passwd
-
点(.) 与星号(*)
- # 检索以r开头t结尾中间只有2个字符的行信息
[root@server ~]# grep -n r..t /etc/passwd
#..代表任意两个字符
- # 检索至少包含1个w字母的行信息
[root@server ~]# grep -n ww* /etc/passwd
#*会对左边的字符重复匹配0次或多次
#写两个ww为了防止*对左边的字符匹配0次
[] :任意匹配
- 案列:过滤文件中数字的前三位数
[root@timeserver ~]# grep -n "[1-9][0-9][0-9]" /etc/passwd
#该命令默认使用模糊匹配,仅匹配文件中数字的前三位,因此下图会过滤出65534,
#需要增加参数 -w 进行精确匹配
{m,n} 重复匹配
当需要匹配更多位数时(7位),上述命令需要重复写7次[0-9],命令过于繁琐,为简化命令
使用范围匹配:{m,n}:将前一项字符重复匹配m-n次。
- 匹配文件中的三位或四位数
[root@timeserver ~]# grep -nw "[0-9]\{3,4\}" /etc/passwd
#使用范围匹配时花需要将{}转译:花括号左边加\
锚定字符精确匹配
上述案列中使用参数 -w 进行精确匹配 。
精确匹配的另一种方式:使用锚定词:用于界定边界,仅匹配锚定词之间的内容 。
案例:检索三位数或四位,个位-千位数字取值范围是0-9
[root@timeserver ~]# grep -n "\<[0-9]\{3,4\}\>" /etc/passwd
[:space:] 匹配空白字符
- 案列: 检索至少一个空白字符
[root@timeserver ~]# egrep -n "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg
#+:对前面的字符匹配一次或多次 ^[]:以...开头 [^ ]:不以...开头 扩展正则表达式需用egrep
- 案列:检索"listen"后跟0个或多个空白行结尾的信息
[root@timeserver ~]# netstat -tan | grep "LISTEN[[:space:]]*$"
扩展正则
? | 将前一项字符进行0次或者1次的重复匹配 |
+ | 将前一项进行1次或者多次的重复匹配 |
(|) | 匹配|符号左边或者右边的字符 |
- 使用扩展正则表达式是,需要添加参数grep -e 或 使用egrep
- 显示文件中root sshd chrony 的相关信息
egrep -n "(root|sshd|chrony)" /etc/passwd
- 过滤/etc/yum.repos.d/中的基名字(绝对路径中最后的文件名)
-
[root@timeserver ~]# echo /etc/yum.repos.d/ | egrep -o [^/]+/?$ #参数:-o :只显示红色匹配项
综合案列
过滤 IP 地址
[root@timeserver ~]# ifconfig ens160 | egrep "([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
总结
相关文章:

RHCE---正则表达式
文章目录 目录 文章目录 前言 一. 文本搜索工具 二.正则表达式 元字符 ^行首与$行尾 点(.) 与星号(*) 扩展正则 总结 前言 正则表达式是文本三剑客中及其重要的一环,称之为灵魂也不为过,到底什么是正则表达式呢,让我们一起来了解以下…...

3D RPG Course | Core 学习日记一:初识URP
前言 最近开始学习Unity中文课堂M_Studio(麦大)的3D RPG Course,学习一下3D RPG游戏核心功能的实现,第一课我们学习到的是地图场景的编辑,其中涉及到了URP渲染。 我们首先进入Unity资源商店把地图素材和人物素材导入好…...

Spring Cloud 之RabbitMQ的学习【详细】
服务通信 分布式系统通信两种方式: 直接远程调用(同步)借助第三方间接通信(异步) 同步通讯的问题 Feign就属于同步通讯。存在的如下问题 耦合度高,每次添加新的模块就要修改原有模块的代码性能下降&am…...

第五章 I/O管理 六、I/O核心子系统
目录 一、核心子系统 1、I/O调度 2、设备保护 二、假脱机技术 1、脱机: 2、假脱机(SPOOLing技术): 3、应用: 1.独占式设备: 2.共享设备: 4、共享打印机原理分析 三、总结 一、核心子系…...

winfrom窗体比例缩放
用于控件大小随窗体大小等比例缩放的C#代码。该代码可以在窗体重载中使用,以确保窗体中的控件在窗体大小改变时能够按比例缩放。 SetTag方法:该方法用于设置控件的Tag属性,以存储控件的宽度、高度、左边距、顶边距和字体大小等信息。SetCont…...

宇信科技:强势行业加速融入AIGC,同时做深做细
【科技明说 | 重磅专题】 大家可能没有想到,一向对外低调行事的宇信科技,在AIGC方面2023年就已经训练出了适配金融场景的垂直模型,并应用到了各产品线上,同时结合通用大模型预研了宇信金融系统编程大模型。宇信金融系…...

Google Play上的Android广告软件应用程序积累了200万次安装
大家好,今天我们要聊一聊Google Play上的一个热门话题——Android广告软件应用程序。最近,一些恶意应用程序在Google Play上累积了200万次的安装量,给用户推送了讨厌的广告,同时又隐藏了它们在受感染设备上的存在。 根据Doctor W…...

算法通关村第四关-黄金挑战栈的经典问题
括号匹配问题 描述 : 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有…...

前端开发必备技能!用简单CSS代码绘制三角形,提升用户体验
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、前…...

想翻译pdf文档,试了几个工具对比:有阿里(完全免费,快,好用,质量高,不用注册登录)道最好(有限免费) 百度(有限免费)和谷歌完全免费(网不好)
文档翻释作为基础设施,工作必备。 阿里 (完全免费,快,好用,质量高,不用注册登录,无广告)我给满分 https://translate.alibaba.com/#core-translation 先选好语言。 Google(完全免…...

c# .net linux ImageSharp+FastDFS+Base64上传图片,压缩图片大小,图像处理dcoker中使用也可以
.net 以前是用System.Drawing来处理图片,但是在dcoker 、linux上用不了 微软官方推荐用 1、SkiaSharp 如果项目运行到docker里,需要NUGET安装SkiaSharp.NativeAssets.Linux.NoDependencies 注意:如果你同时引用SkiaSharp.NativeAssets.Li…...

Flutter FittedBox
🔥 英文单词FittedBox 🔥 Fitted 通过有道翻译如下 : Box 通过有道翻译如下 : 对 FittedBox 的理解 我们可以将 FittedBox 理解为合适的盒子,将其它布局放到FittedBox这样一个盒子中,从而实现 盒子里面的…...

亚信科技:发挥自我优势深入AIGC,并购整合高瞻远瞩致力未来路
【科技明说 | 重磅专题】 亚信科技在IT提供商领域中是一个低调的前行者,在全球通信及大型企业市场中扮演着重要的角色。对于近年来如火如荼AI方面的投入与研究,亚信科技是否也很重视呢? 事实上,是肯定的回答。 在我看…...

【设计模式】第17节:行为型模式之“解释器模式”
一、简介 解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法。 二、适用场景 领域特定语言复杂输入解释可扩展的语言结构 三、UML类图 四、案例 对输入的特定格式的打印语句进行解析并执行。 packag…...
各传输介质详细知识点
一.百兆网传输介质 快速以太网(802.3u) 100Base-T2 电缆:2对3类UTP 最大段长:100m 特性阻抗:100 100Base-T4 电缆:4对3类UTP 最大段长:100m 特点:8B/6T,NRZ编码 特性阻抗:1…...

历史随想随记
古往今来所有的王侯将相如不都成为人们茶余饭后的笑谈,一个人无论多么厉害,多么聪明,多么奸诈,多么有权势,他们都逃不出一个结局——死亡,我觉得这是人生最大的悲哀。看历史看的多了,就会发现这…...

ClickHouse Java多个参数的UDF编写
一、环境版本 环境版本docker clickhouse22.3.10.22 docker pull clickhouse/clickhouse-server:22.3.10.22二、XML配置 2.1 配置文件 # 创建udf配置文件 vim /etc/clickhouse-server/demo_function.xml<functions><function><type>executable</type&…...

RPA除了和OCR、NLP技术结合,还能和什么技术结合?
鉴于业内现在也经常把RPA称为数字员工,就虚拟一个人的形象来解答吧。 首先是头部,实现人的“听看说想”能力: 听:ASR(语音识别技术),主要用于听取和理解语音输入,让RPA能处理语音数…...

AssertionError: Torch not compiled with CUDA enabled
Pytorch和CUDA版本不兼容,运行python后(终端输入python回车)用以下代码测试 import torch print(torch.__version__) print(torch.cuda.is_available())返回False则说明目前的pytorch版本无法使用显卡,如下图所示 接着重装合适版…...

【Ubuntu 系统使用进入,自动进入base虚拟环境解决最全】
项目场景: 在Ubuntu上安装完anaconda后,发现每次打开终端后都会自动进入到base的虚拟环境中去,虽然在这些环境下使用问题不大,但一些软件的安装在虚拟环境下有影响。每次使用conda deactivate退出也很麻烦。 问题描述 安装玩之…...

C++项目——云备份-⑨-服务端与客户端功能联调
文章目录 专栏导读1.服务端源代码2.客户端源代码3.浏览器访问测试//listshow 4.上传文件测试5.文件下载测试 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导师,阿里云专家博主&…...

Linux两条服务器实现相互免密登录
1.准备两台虚拟机,一台充当服务器端(server),一台充当客户端(client) 服务器端(server):192.168.75.139 客户端(client):192.168.75…...

华纳云Ubuntu环境怎么编译安装PHP和Nginx
在Ubuntu环境中编译安装PHP和Nginx需要进行一系列步骤。以下是安装PHP和Nginx的一般过程: 1. 更新系统: 首先,确保您的系统是最新的,运行以下命令更新软件包列表和已安装的软件包: sudo apt update sudo apt upgra…...

Ubuntu 23.10(Mantic Minotaur)正式发布,支持Linux 6.5和GNOME 45
导读Canonical 近日正式发布了 Ubuntu 23.10(Mantic Minotaur)操作系统,其中包含一些最新的 GNU/Linux 技术、改进的硬件支持以及许多其他变化。 Ubuntu 23.10 采用了最新的 Linux 6.5 内核系列,并为 Ubuntu 桌面和服务器增强了 z…...

Linux:KVM虚拟化
本章操作基于centos7系统 简介 KVM是Kernel Virtual Machine的简写,目前Redhat只支持在64位的Rhel5.4以上的系统运行KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,在2008年被redhat公司收购并获得了一项hypervisor技术,不过redh…...

HTML标签,列表,表格相关
HTML标签的分类 HTML标签可以分为以下几类: 标题标签:用于定义网页的标题,分为h1、h2、h3、h4、h5和h6。 段落标签:用于定义文本的段落,常用的有p标签。 链接标签:用于定义链接,常用的有a标签…...

【音视频】Linux | FFmpeg源码搭建
Linux | FFmpeg源码搭建 时间:2023-06-21 文章目录 `Linux` | `FFmpeg`源码搭建@[toc]1.参考2.获取源码2-1.建立工作目录2-2.获取`AAC`2-3.获取`X264`2-4.获取`X265`2-5.获取`FFmpeg`3.编译/安装3-1.编译`AAC`3-1-1.解压源码3-1-2.编译3-1-3.安装3-2.编译`X264`3-2-1.解压源码…...

Ansible中常用模块
1.ansible实现管理的方式 Ad-Hoc //利用ansible命令直接完成管理,主要用于临时命令使用场景 playbook //ansible脚本,主要用于大型项目场景,需要前期的规划 2.Ad-Hoc执行方式中如何获得帮助 ansible-doc …...

2000-2021年上市公司产融结合度量数据
2000-2021年上市公司产融结合度量数据 1、时间:2000-2021年 2、指标:股票代码、年份、是否持有银行股份、持有银行股份比例、是否持有其他金融机构股份、产融结合 3、来源:上市公司年报 4、范围:上市公司 5、样本量ÿ…...

2023最新最全Web自动化测试面试题
1、Selenium 中 hidden 或者是 display none 的元素是否可以定位到? 不可以。可以写 JavaScript 将标签中的 hidden 先改为 0,再进行定位元素。 2、Selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素一 定是可以点击的&am…...