当前位置: 首页 > news >正文

Linux:Shell编程之正则表达式

目录

绪论

1、正则表达式

1.1 通配符

1.2 正则表达式分类

1.3 基本正则

1.4 正则表达式中表示次数的表达式

1.5 位置锚定

1.5.1 词首锚定和词尾锚定

1.6 分组()

1.7  逻辑或

1.8 扩展正则


绪论

正则表达式:有一类特殊字符以及文本字符所编写的一种模式,用来处理文本当中的内容,其中的一些字符不表示字符的字面含义,表示控制或者通配的功能

通配符:只能匹配文件名与目录名,不能匹配文件的内容

1、正则表达式

1.1 通配符

只能匹配文件名与目录名,不能匹配文件的内容

*匹配任意一个或者多个字符
touch  1.txt  2.txt  3.txt
ls *.txt?匹配任意一个字符(就是匹配单个字符)
ls ?.txt[ ] 匹配范围内的任意单个字符
touch {a..z}.txt
ls [a-n].txt

1.2 正则表达式分类

· 基本正则表达式

· 扩展正则表达式 

1.3 基本正则

字符匹配,元字符

. 匹配任意的单个字符,可以是一个汉字,\表示转义符,\.就是一个点 

eg:ls  |  grep  "12."  输出为123.txt

"()括号表示分组的意思",\(\)就是括号

eg:"[]"匹配指定范围内的任意单个字符

ls  |  grep  "[0-9]"

eg:大小写和数字一起匹配

ls  |  grep  "[0-9A-Za-z]"

eg:"[^]"取反,指定范围之外的

ls  |  grep  "[^A-Z]"

[[:space:]]包含空格,tab键,换行的空格,回车的空格

[[:blank:]] 空白字符(空格和tab制表符)

eg:以rc开头的任意单个字符0-6的数字

ls  /etc  |  grep  "rc[0-6]"

eg:只匹配以rc开头的文件,.不是正则

ls  /etc  |  grep  "rc\."

通配符不能完全匹配大小写, 正则可以

1.4 正则表达式中表示次数的表达式

" * "匹配前面的字符任意次,0次也行,无数次也行,有多少匹配多少(贪婪模式),没有也行

eg:

echo  goole  |  grep  "go*gle"  输出为google

echo  ggle  |  grep  "go*gle"  输出为ggle

" .* "匹配任意长度的字符,至少要有一次,不包括0次

eg:

echo  goole  |  grep  "go.*gle"  输出为google

echo  ggle  |  grep  "go.*gle"  此时匹配不到

" \?"匹配前面的字符0次或者一次,可有可无

" \+ " 匹配前面的字符至少1次,最多可以无数次

eg:

echo  ggle  |  grep  "go\+gle"

\{n\}匹配前面的字符等于n次,必须连续出现才能匹配

eg:echo  gogle  |  grep  "go\{|\}gle"

\{m,n\}匹配前面的字符,最少m次,最多n次

\{,n\}匹配前面的字符,最多n次(只要出现几次,出现都算,除非没有,只要前面的字符有,都算)

eg:echo  ggle  |  grep  "go\{,3}gle"

\{n,\}匹配前面的字符至少n次

1.5 位置锚定

^ 以什么为开头,在模式的左侧  

eg:cat  /etc/passwd  |  grep  "^root"

$ 以什么为结尾,在模式的右侧 r$表示以r为结尾

^root$ 用于匹配整行,而且整行中只有以后个root

^$ / ^[[:space:]]$  匹配空行

1.5.1 词首锚定和词尾锚定

词首锚定 \< 或者 \b

词尾锚定 \> 或者 \b   

根据\b的前后位置判断

eg:echo  hello-123  |  grep  "123\b"

输出为标红的hello-123

echo  hello-123  |  grep  "\bhello"

输出为标红的hello-123

\<root\> 表示匹配整个单词

1.6 分组()

echo  abccc  |  grep  "abc\{3\}"

输出为abccc

\{n\}表示正好出现n次,n次表示前面的字符必须要连续出现才能匹配

\{,n}只要你出现几次都算,除非没有

eg:echo  golgogle  |  grep  "\(go  \)\{}\}gle"

输出为gogle

\(go\)是一个租,连续的go只出现一个,两个不连续的go都出现

1.7  逻辑或

\|:斜杠管道符表示逻辑或

echo  | abc2abc  |  grep  "(1\|2\)abc"

1.8 扩展正则

不用写斜杠了

需要使用grep  -E 或者egrep

echo  1abc2abc  |  grep  -E  "(1|2)abc"

匹配邮箱号码  :

vim  /opt/pipei.txt

cat  pipei.txt  |  grep  -E "[0-9a-z]{9,11}@[0-9a-z]{2,3}\.[a-z]{2,3} 

相关文章:

Linux:Shell编程之正则表达式

目录 绪论 1、正则表达式 1.1 通配符 1.2 正则表达式分类 1.3 基本正则 1.4 正则表达式中表示次数的表达式 1.5 位置锚定 1.5.1 词首锚定和词尾锚定 1.6 分组&#xff08;&#xff09; 1.7 逻辑或 1.8 扩展正则 绪论 正则表达式&#xff1a;有一类特殊字符以及文本…...

Python Opencv实践 - 图像缩放

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg_cat cv.imread("../SampleImages/cat.jpg", cv.IMREAD_COLOR) plt.imshow(img_cat[:,:,::-1])#图像绝对尺寸缩放 #cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) #指定Size大…...

大脑营行|“福安市华龙教育基金”支持家乡教育事业发展

8月8日&#xff0c;福安市松罗中学举行“福安市华龙教育基金”中考奖学金颁发仪式。福安市松罗乡党委书记钟文、乡长郑仁寿、福安市人民政府教育督导室副科级督导员&#xff08;片区领导&#xff09;陈秦、校长张明亮、各村支部书记、家长代表、受奖学生&#xff0c;校领导班子…...

Windows 2016安装Jenkins

Jenkins 下载&#xff0c;安装 下载OpenJDK 11 for Wndows 两种方式 choco install openjdk11 https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.20%2B8/OpenJDK11U-jdk_x64_windows_hotspot_11.0.20_8.msi how to enable administrator user to …...

章节4:Burp Target模块

章节4&#xff1a;Burp Target模块 Burp渗透测试流程 01 Target模块的作用 与HTTP History的区别 HTTP History按时间顺序记录Target按主机或者域名分类记录&#xff08;字母顺序&#xff09; Target模块的作用 把握网站的整体情况对一次工作的域进行分析分析网站存在的攻…...

CAN总线一些经典的现场故障

本文分析一些经典的CAN总线现场故障。 1、CAN总线的常见故障 CAN总线错误分析与解决 当CAN总线出现故障或数据传输异常时,往往会出现多种奇怪的故障现象,如仪表板显示异常,车辆无法启动,启动后无法熄灭,车辆动力性能下降,某些电控系统功能失等。 这是因为相关数据或信息…...

VS+QT+Opencv使用YOLOv4对视频流进行目标检测

对单张图像的检测&#xff0c;请参考&#xff1a;https://blog.csdn.net/qq_45445740/article/details/109659938 #include <fstream> #include <sstream> #include <iostream> #include <opencv2/dnn.hpp> #include <opencv2/imgproc.hpp> #inc…...

oracle创建管理用户并授权

oracle创建管理用户并授权 创建用户 create user test identified by test;修改密码 alter user test identified by 123456;删除用户 drop user test;删除拥有对象的用户 若用户拥有对象&#xff0c;则不能直接删除&#xff0c;否则将返回一个错误值。指定关键字cascade,…...

​三江学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

​三江学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》...

机器学习笔记 - 基于PyTorch + 类似ResNet的单目标检测

一、获取并了解数据 我们将处理年龄相关性黄斑变性 (AMD) 患者的眼部图像。 数据集下载地址,从下面的地址中,找到iChallenge-AMD,然后下载。 Baidu Research Open-Access Dataset - DownloadDownload Baidu Research Open-Access Datasethttps://ai.baidu.com/bro…...

系列二、Redis简介

一、概述 # 官网 https://redis.io/ 总结&#xff1a;redis是一个内存型的数据库。 二、特点 Redis是一个高性能key/value内存型数据库。Redis支持丰富的数据类型。Redis支持持久化 。Redis单线程,单进程。...

基于TF-IDF+TensorFlow+词云+LDA 新闻自动文摘推荐系统—深度学习算法应用(含ipynb源码)+训练数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境TensorFlow环境方法一方法二 模块实现1. 数据预处理1&#xff09;导入数据2&#xff09;数据清洗3&#xff09;统计词频 2. 词云构建3. 关键词提取4. 语音播报5. LDA主题模型6. 模型构建 系统测试工程源代码下载…...

尼科彻斯定理-C语言/Java

描述 验证尼科彻斯定理&#xff0c;即&#xff1a;任何一个整数m的立方都可以写成m个连续奇数之和。 例如&#xff1a; 1^31 2^335 3^37911 4^313151719 输入一个正整数m&#xff08;m≤100&#xff09;&#xff0c;将m的立方写成m个连续奇数之和的形式输出。&…...

C++学习笔记——从面试题出发学习C++

C学习笔记——从面试题出发学习C C学习笔记——从面试题出发学习C1. 成员函数的重写、重载和隐藏的区别&#xff1f;2. 构造函数可以是虚函数吗&#xff1f;内联函数可以是虚函数吗&#xff1f;析构函数为什么一定要是虚函数&#xff1f;3. 解释左值/右值、左值/右值引用、std:…...

WebAPIs 第二天

DOM事件基础 事件监听事件类型事件对象 一.事件监听 ① 概念&#xff1a;就是让程序检测是否有事件发生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也成为绑定事件或者注册事件 ② 语法&#xff1a;元素对象.addEventListener(事件类型&…...

解决macOS执行fastboot找不到设备的问题

背景 最近准备给我的备用机Redmi Note 11 5G刷个类原生的三方ROM&#xff0c;MIUI实在是用腻了。搜罗了一番&#xff0c;在XDA上找到了一个基于Pixel Experience开发的ROM&#xff1a;PixelExperience Plus for Redmi Note 11T/11S 5G/11 5G/POCO M4 Pro 5G (everpal)&#xf…...

Linux命令 -- chmod

Linux命令 -- chmod 参数含义权限说明修改文件权限修改目录权限 参数含义 文件用户 u 文件所有者g 文件所有者同组的用户o 其它用户a 所有用户 文件权限 r 读权限&#xff08;对应数值4&#xff09;w 写权限&#xff08;对应数值2&#xff09;x 执行权限&#xff08;对应数…...

国产超低功耗32位MCU的应用

随着物联网技术的不断发展&#xff0c;超低功耗MCU已经成为了物联网方案中主要的芯片处理技术。超低功耗MCU具有众多的优点&#xff0c;其中一大所用就是能够大大提高物联网设备的续航能力&#xff0c;保证设备在长时间内不掉电不断电。那么&#xff0c;超低功耗MCU在物联网方案…...

将数组(矩阵)旋转根据指定的旋转角度scipy库的rotate方法

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将数组(矩阵)旋转 根据指定的旋转角度 scipy库的rotate方法 关于下列代码说法正确的是&#xff1f; import numpy as np from scipy.ndimage import rotate a np.array([[1,2,3,4], …...

MFC创建和使用OCX控件

文章目录 MFC建立OCX控件注册OCX控件与反注册使用Internet Explorer测试ocx控件OCX控件添加方法OCX控件添加事件Web使用OCX控件MFC使用OCX控件使用OCX控件调用ocx的功能函数对ocx的事件响应OCX控件调试工具tstcon32.exe加载ocx控件使用tstcon32.exe调试ocxMFC建立OCX控件 新建…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

高防服务器价格高原因分析

高防服务器的价格较高&#xff0c;主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因&#xff1a; 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器&#xff0c;因此…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...