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 分组() 1.7 逻辑或 1.8 扩展正则 绪论 正则表达式:有一类特殊字符以及文本…...
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日,福安市松罗中学举行“福安市华龙教育基金”中考奖学金颁发仪式。福安市松罗乡党委书记钟文、乡长郑仁寿、福安市人民政府教育督导室副科级督导员(片区领导)陈秦、校长张明亮、各村支部书记、家长代表、受奖学生,校领导班子…...
Windows 2016安装Jenkins
Jenkins 下载,安装 下载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:Burp Target模块 Burp渗透测试流程 01 Target模块的作用 与HTTP History的区别 HTTP History按时间顺序记录Target按主机或者域名分类记录(字母顺序) Target模块的作用 把握网站的整体情况对一次工作的域进行分析分析网站存在的攻…...
CAN总线一些经典的现场故障
本文分析一些经典的CAN总线现场故障。 1、CAN总线的常见故障 CAN总线错误分析与解决 当CAN总线出现故障或数据传输异常时,往往会出现多种奇怪的故障现象,如仪表板显示异常,车辆无法启动,启动后无法熄灭,车辆动力性能下降,某些电控系统功能失等。 这是因为相关数据或信息…...
VS+QT+Opencv使用YOLOv4对视频流进行目标检测
对单张图像的检测,请参考: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;删除拥有对象的用户 若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字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/ 总结:redis是一个内存型的数据库。 二、特点 Redis是一个高性能key/value内存型数据库。Redis支持丰富的数据类型。Redis支持持久化 。Redis单线程,单进程。...
基于TF-IDF+TensorFlow+词云+LDA 新闻自动文摘推荐系统—深度学习算法应用(含ipynb源码)+训练数据集
目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境TensorFlow环境方法一方法二 模块实现1. 数据预处理1)导入数据2)数据清洗3)统计词频 2. 词云构建3. 关键词提取4. 语音播报5. LDA主题模型6. 模型构建 系统测试工程源代码下载…...
尼科彻斯定理-C语言/Java
描述 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 例如: 1^31 2^335 3^37911 4^313151719 输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。&…...
C++学习笔记——从面试题出发学习C++
C学习笔记——从面试题出发学习C C学习笔记——从面试题出发学习C1. 成员函数的重写、重载和隐藏的区别?2. 构造函数可以是虚函数吗?内联函数可以是虚函数吗?析构函数为什么一定要是虚函数?3. 解释左值/右值、左值/右值引用、std:…...
WebAPIs 第二天
DOM事件基础 事件监听事件类型事件对象 一.事件监听 ① 概念:就是让程序检测是否有事件发生,一旦有事件触发,就立即调用一个函数做出响应,也成为绑定事件或者注册事件 ② 语法:元素对象.addEventListener(事件类型&…...
解决macOS执行fastboot找不到设备的问题
背景 最近准备给我的备用机Redmi Note 11 5G刷个类原生的三方ROM,MIUI实在是用腻了。搜罗了一番,在XDA上找到了一个基于Pixel Experience开发的ROM:PixelExperience Plus for Redmi Note 11T/11S 5G/11 5G/POCO M4 Pro 5G (everpal)…...
Linux命令 -- chmod
Linux命令 -- chmod 参数含义权限说明修改文件权限修改目录权限 参数含义 文件用户 u 文件所有者g 文件所有者同组的用户o 其它用户a 所有用户 文件权限 r 读权限(对应数值4)w 写权限(对应数值2)x 执行权限(对应数…...
国产超低功耗32位MCU的应用
随着物联网技术的不断发展,超低功耗MCU已经成为了物联网方案中主要的芯片处理技术。超低功耗MCU具有众多的优点,其中一大所用就是能够大大提高物联网设备的续航能力,保证设备在长时间内不掉电不断电。那么,超低功耗MCU在物联网方案…...
将数组(矩阵)旋转根据指定的旋转角度scipy库的rotate方法
【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将数组(矩阵)旋转 根据指定的旋转角度 scipy库的rotate方法 关于下列代码说法正确的是? 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控件 新建…...
别再手动编译了!用Maven的annotationProcessorPaths一键搞定自定义注解处理器
别再手动编译了!用Maven的annotationProcessorPaths一键搞定自定义注解处理器 每次修改完代码都要手动执行额外编译步骤?团队内部开发的注解处理器总是无法像Lombok那样自动触发代码生成?这可能是大多数Java开发者在使用自定义注解处理器时遇…...
AGI研发已无“安全窗口期”:从GPT-5延迟到中国“伏羲计划”提速,90天内5国密集调整国家级AGI战略(附原始政策文本对照表)
第一章:AGI研发的国际竞争格局 2026奇点智能技术大会(https://ml-summit.org) 全球通用人工智能(AGI)研发已进入国家战略竞速阶段,美、中、欧、日、韩等主要经济体正通过顶层政策设计、算力基建投入、基础模型开源生态与人才战略…...
从PC到手机:一文看懂高通安卓设备上的UEFI启动流程(附XBL/ABL源码结构解析)
从PC到手机:高通安卓设备UEFI启动全流程与架构解析 当按下手机电源键的瞬间,隐藏在芯片深处的精密舞蹈便悄然展开。与PC时代按下机箱按钮后熟悉的BIOS界面不同,移动设备的启动流程更像是一场精心编排的默剧——没有闪烁的光标,没有…...
别再只输密码了!手把手带你用Wireshark抓包,亲手‘看见’WPA2的四次握手过程(含过滤技巧)
无线网络安全实战:用Wireshark解析WPA2四次握手全流程 家里WiFi突然连不上?明明密码正确却反复提示认证失败?作为网络工程师,我遇到过太多次同事抱怨"路由器抽风",而真相往往藏在那些看不见的数据帧里。今天…...
别再手动算面积和距离了!用Shapely处理GeoJSON数据,效率提升10倍
地理空间数据分析实战:用Shapely解锁GeoJSON处理新姿势 还在用传统方法逐行解析GeoJSON数据?当面对城市地块分析、物流路径优化或区域规划时,手动计算几何属性不仅耗时费力,还容易引入人为误差。这里有一份来自某城市规划局的真实…...
深入理解 SQLite:架构设计与核心特性
# 深入理解 SQLite:架构设计与核心特性> SQLite 是地球上最广泛应用于人类的数据库引擎。从手机应用到浏览器再到飞机系统,你可能在不知情的情况下已经与它打过无数次照面。本文将深入探讨 SQLite 的内部架构和核心设计。## 为什么 SQLite 如此特别&a…...
MIT App Inventor完整指南:无需代码的移动应用开发利器
MIT App Inventor完整指南:无需代码的移动应用开发利器 【免费下载链接】appinventor-sources MIT App Inventor Public Open Source 项目地址: https://gitcode.com/gh_mirrors/ap/appinventor-sources MIT App Inventor是一个强大的开源移动应用开发平台&a…...
从花瓶到咖啡杯:SolidWorks抽壳命令的两种高级用法,CaTICs 3D01-01与3D05_L02-B对比教学
从花瓶到咖啡杯:SolidWorks抽壳命令的两种高级用法实战解析 在工业设计领域,抽壳命令看似简单,却能直接影响建模效率与成品质量。今天我们就以CaTICs竞赛中的两个经典案例——轴对称花瓶(3D01-01)与带手柄斜口杯&#…...
C# 基于MD5实现密码加密功能,附源码
一、MD5 加密的基本原理 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由 Ron Rivest 于 1991 年设计。它能够将任意长度的输入数据转换为固定长度的 128 位(16 字节)哈希值,通常以 32 位十六…...
当镜子学会凝视自己:一台AI如何教会自己如何学习
Bilevel Autoresearch: Meta-Autoresearching Itself 费曼式深度解读 “如果自动研究本身就是一种研究,那么自动研究可以应用到研究自身。” —— Yaonan Qu & Meng Lu, 2026 🌌 引子:一台机器的顿悟时刻 想象一下这样的场景: 深夜,你的电脑屏幕上,一段Python代码…...
