shell编程--正则表达式

正则表达式

正则表达式都被置于两个正斜杠之间;如/l[oO]ve/

示例

匹配数字的脚本,用户输入创建账号的数量

语法: [[ ^[0-9]+$ ]]

表示必须输入数字

#!/bin/bashwhile :
do
read -p "输入数字:" numif [[ $num =~ ^[0-9]+$ ]]thenecho "再见"exitelseecho "重新输入"fi
done
#!/bin/bash
read -p "你好,请输入姓名:" namewhile :
do
read -p "你是傻子吗,请输入 是:" numif [ $num = "是"]thenecho "大傻子,$name,再见"exitelseecho "重新输入"fi
done

元字符

定义

元字符表达不同于字面本身的含义

分类

基本正则

^    行首定位符
# cat /etc/passwd#找出root
grep root /etc/passwd#找出行首为root
grep "^root" /etc/passwd
$  行尾定位符
vim 1.txt
i loveyou
love
loveyou#############################
grep "love$" 1.txt
.  匹配任意单个字符
vim 1.txt
abc
adc###############################
grep a.c 1.txt
*  匹配前导符0次到多次
vim 1.txt
a
ab
abc
abcd
abcde
abcdef
gg
hh
ii########################################grep "abc*" 1.txtab
abc
abcd
abcde
abcdef#ab后面好想有c,好像也没有,c出现0次到多次grep "abcde*" 1.txtabcd
abcde
abcdef#e出现0次到多次
.* 任意多个字符
grep ".*" 1.txta
ab
abc
abcd
abcde
abcdef
gg
hh
ii###################################
为什么*.不可以
*前面没有前导符
[ ] 匹配指定范围内的一个字符
vim 1.txt
love
Love
1love
|ove#################################################
grep "[lL]ove" 1.txtlove
Love#取反
grep "[^lL1]ove" 1.txt
|ovegrep "[a-z]ove" 1.txt
love#####################################################
[0-5][0-9] 匹配00-59
[0-9]匹配0-9
[ - ]  匹配指定范围内的一个字符连续的范围
[0-9]0到9
[a-z]a到z
[A-Z]A到Z
[ ^ ] 匹配不在指定组内的字符

取反

[^0-9]非数字
[^a-z]非小写字母
\ 转义符
grep "l." 1.txt
love
l.ve\.  转义.
grep "l\." 1.txt
l.ve用来转义元字符("" '' \)
''强引用
\<  词首定位符
vim 1.txt
iloveyou
love
1love###############################
grep "\<love" 1.txt
查找以love开头的
\> 词尾定位符
grep "love\>" 1.txt
love
查找以love结尾的
() 匹配稍后使用的字符标签

vim末行模式

iloveyou
loveyou
1love:1,2 s/\(.*\)/#\1/
#定位1,2行,s///模式,括号得转义,.*匹配所有字符,\1表示第一次括号引用选中的内容,#表示在定位的1,2行前面加#192.168.1.1:%s/192.168.1.1/192.168.2.3/
#s///就是替换,把1.1替换为2.3192.168.2.2:% s/\(192\)/123\1/
#在192前面加123
x\{m\}  字符x重复几次
love
loove
looove
loooove
looooove
loooooovegrep "o\{3\}" 1.txt
looove
loooove
looooove
loooooove
looooooove
#o重复3符的字符,{}也得转义
x\{m,\} 字符重复出现m次以上
grep "0\{3,\}" 1.txt

x\{m,n\} 字符x重复出啊先m到n次
grep "o\{3,4\}" 1.txt

行首行尾与词首词尾

iloveyou
ilove
loveyou
aaa iloveyou bbb
ccc ilove ddd
eee loveyou fff####################################
grep "^love" 1.txt
loveyougrep "\<love" 1.txt
loveyou
eee loveyou fffgrep "love$" 1.txt
ilovegrep "love\>" 1.txt
ilove
ccc ilove ddd

扩展正则元字符

+  匹配前导符1到n次
lve
love
loove
looove##############################grep -E
egrep 
这两个可以识别扩展元字符
#################################
egrep lo+ve 1.txt
love
loove
loove#  *0到多次
? 匹配前导符0到1次
egrep "lo?ve" 1.txt
lve
love
a|b 匹配a或b
egrep "o|v" 1.txt
lve
love
loove
looove
looove
() 组字符
rs
loveable
lovers##########################################
egrep "love(able|rs)" 1.txt
loveabgle
loversegrep "loveable|rs" 1.txt
rs
loveable
lovers

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产品需求过程管理重要性

产品需求过程管理重要性 背景 以下都是真实事项经历回顾&#xff0c;在产品开发过程中&#xff0c;产品经理与研发团队之间的沟通至关重要。然而&#xff0c;沟通不畅或信息缺失常常导致需求无法准确传达&#xff0c;最终影响产品的成功。以下是一些常见的问题&#xff1a; 1.需…

Jmeter执行多机联合负载

1、注意事项&#xff0c;负载机必须要安装jre&#xff0c;控制机则必须安装jdk。要配置同网段ip&#xff0c;双向关闭防火墙。 每个负载机要平均承担线程数。 具体执行事项查看上面截图所示&#xff0c;控制机和负载机配置。 2、先给负载机设置ip地址&#xff0c;保持与控制…

C++项目详细分析_WebServer

前言 项目地址 项目介绍 源码详细分析 项目路径如下&#xff1a; 1.webserver.cpp 头文件和构造函数 #include "webserver.h"WebServer::WebServer() {// http_conn类对象users new http_conn[MAX_FD];// root文件夹路径char server_path[200];getcwd(server…

prometheus基于文件的服务发现

之间讲到&#xff0c;prometheus监控的对象就来自于他的配置文件里面的targets&#xff0c;如果要新增被监控对象&#xff0c;就继续往targets里面加。 但这个缺点是&#xff0c;每次修改完后都得重启prometheus。有没有什么办法&#xff0c;能在不重启的情况下增加target呢&a…

【Qt】 QComboBox | QSpinBox

文章目录 QComboBox —— 下拉框QComboBox 属性核心方法核心信号QComboBox 使用 QSpinBox —— 微调框QSpinBox 属性核心信号QSpinBox 使用 QComboBox —— 下拉框 QComboBox 属性 QComboBox —— 表示下拉框 currentText ——当前选中的文本 currentindex ——当前选中的条…

【硬件知识】从零开始认识GPU

【硬件知识】从零开始认识GPU 一、GPU的发展史简介二、GPU主要构成三、GPU与AI的关系 一、GPU的发展史简介 GPU&#xff08;图形处理器&#xff09;的发展史是一段充满创新与变革的历程&#xff0c;它不仅改变了计算机图形显示的方式&#xff0c;还推动了高性能计算、人工智能…

盘点大模型中转 API 平台,并比较费用

1. 大模型中转 API 平台集合 1.1 DevAGI DevAGI开放平台 Open AI 价格 1.2 Deepbricks 官网价格 1.3 AiHubMix AiHubMix 官网 使用教程 价格&#xff1a; 1.4 WildCard 开卡订阅 WildCard官网 价格 有3.5% 的充值手续费&#xff0c;API 价格与 Open AI 一样 2. 价…

机器学习:opencv--图像边缘检测

目录 前言 一、图像边缘检测 1.边缘检测 2.边缘检测的方法 二、Sobel算子 1.Sobel算子 2.计算 3.代码实现 4.代码步骤解析 1.导入图片 2.处理x轴和y轴的边缘并相加 三、Scharr算子 1.Scharr算子 2.计算 3.代码实现 四、Laplacian算子 1.Lapla…

PHP 项目流水线部署与错误问题解决

在现代软件开发中&#xff0c;持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;已成为确保代码质量和加快发布速度的关键实践。本文将介绍如何构建一个 PHP 项目的流水线部署&#xff0c;涵盖从代码提交到生产环境的自动化流程。 #### 1. 什么是流水线…

高效能低延迟:EasyCVR平台WebRTC支持H.265在远程监控中的优势

TSINGSEE青犀视频EasyCVR视频汇聚平台在WebRTC方面确实支持H.265编码&#xff0c;尽管标准的WebRTC API在大多数浏览器中默认并不支持H.265&#xff08;也称为HEVC&#xff0c;高效视频编码&#xff09;编码。EasyCVR平台通过一系列创新的技术手段&#xff0c;实现了在WebRTC协…

深入Redis:细谈持久化

Redis的数据是保存在内存中的&#xff0c;内存里面的数据是不持久的&#xff0c;要想做到持久化&#xff0c;必须要把在内存中的数据储存到硬盘上。 Redis速度非常快&#xff0c;数据只有在内存中才有这样的速度&#xff0c;但是为了持久&#xff0c;数据还是要想办法保存到硬…

WordPress 资源展示型下载类主题 CeoMax-Pro_v7.6 开心版

WordPress 资源展示型下载类主题 CeoMax-Pro_v7.6 开心版&#xff1b; CeoMax-Pro是一款极致美观强大的WordPress付费资源下载主题&#xff0c;它能满足您所有付费资源下载的业务需求&#xff01; 你的想法与业务不能被主题所限制&#xff01;CeoMax-Pro强大的功能&#xff0…

Unity(2022.3.41LTS) - UI详细介绍- Button(按钮)TMP

目录 零.简介 一、基本功能与重要性 二、属性和设置详解 三、使用方法深入探讨 四、优化和注意事项 零.简介 在 Unity 中&#xff0c;按钮&#xff08;Button&#xff09;是用户界面中非常重要的交互元素之一。以下是对 Unity 中按钮的更详细介绍&#xff1a; 一、基本功…

使用session实现单用户多端登录限制

基本流程&#xff1a; 首先获得当前浏览器访问服务器的session&#xff0c;然后根据用户的信息&#xff08;如id等&#xff09;在redis中查找&#xff0c;如果找到&#xff0c;并且和查找对应的session不同&#xff0c;则可以判断已经有其他设备登录过了&#xff0c;这个时候就…

基于生成对抗模型GAN蒸馏的方法FAKD及其在EdgesSRGAN中的应用

文章目录 FAKD系列论文paper1: FAKD&#xff1a;用于高效图像超分辨率的特征亲和知识蒸馏&#xff08;2020&#xff09;ABSTRACT1. INTRODUCTION2. PROPOSED METHOD2.1. Feature Affinity-based Distillation (FAKD) 2.2. Overall Loss Function3. EXPERIMENTAL RESULTS3.1. Ex…

【读书笔记-《30天自制操作系统》-14】Day15

本篇内容开始讲解多任务。本篇内容结构很简单&#xff0c;先讲解任务切换的原理&#xff0c;再讲解任务切换的代码实践。但是涉及到的知识不少&#xff0c;理解上也有些难度。 1. 任务切换与多任务原理 1.1 多任务与任务切换 所谓多任务&#xff0c;指的是操作系统同时运行多…

【python因果推断库2】使用 PyMC 模型进行差分-in-差分(Difference in Differences, DID)分析

目录 使用 PyMC 模型进行差分-in-差分&#xff08;Difference in Differences, DID&#xff09;分析 导入数据 分析 使用 PyMC 模型建模银行业数据集 导入数据 分析 1 - 经典 22 差分-in-差分 (DiD) 分析 2 - 具有多个干预前后观测值的差分-in-差分 (DiD) 分析 使用 PyMC…

设计模式之生成器方法

一、生成器模式概念 Builder模式也叫建造者模式或者生成器模式&#xff0c;是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一&#xff0c;用来隐藏复合对象的创建过程&#xff0c;它把复合对象的创建过程加以抽象&#xff0c;通过子类继承和重载的方式…

MySQL:约束

目录 一、概述二、创建测试三、外键约束3.1 数据准备3.2 添加外键3.3 删除外键3.4 增加外键约束 一、概述 约束主要用于作用在表中字段上的规则&#xff0c;用于限制存储在表中的数据。 保证数据库中数据的正确性、有效性和完整性。 约束描述关键字主键约束非空并且唯一PRIMARY…

代码随想录算法训练营第三十四天| 62.不同路径 63. 不同路径 II

62.不同路径 题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少…