Shell之(正则表达式)

news2024/12/26 23:45:30

目录

一、正则表达式的概括

常用选项 

 基础正则表达式

查看以xxx为开头    查看以xxx为结尾的文件内容 

匹配单个或多个字符 

 匹配中括号里的内容

 对子表达式进行多次或者限定次数的匹配 

拓展正则表达式的基本用法 

扩展元字符

+ 匹配+前面的字符或表达式至少1次(大于等于1次{1,})

? 匹配?前面的字符或表达式0次或1次({0,1})

()  将()里面的表达式作为一个整体 

| 以或的方式匹配字符串 


一、正则表达式的概括

正则表达式是由普通字符与元字符组成:

  • 普通字符 包括大小写字母、数字、标点符号及一些其他符号
  • 元字符 是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式
  • 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式.

通配符:作用范围 匹配文件/目录名

正则表达式:匹配文件内容,用于精确筛选信息,可以配合grep,egrep,awk,sed命令进行搭配使用,查找时,也比通配符更加精确

常用选项 

 基础正则表达式

(支持的工具:grep、egrep、sed、awk) 

查看以xxx为开头    查看以xxx为结尾的文件内容 
[root@localhost ~]# grep '^1' zzz.txt   #过滤出1开头的

[root@localhost ~]# grep '3$' zzz.txt   #过滤出3结尾的 

匹配单个或多个字符 
[root@localhost ~]# grep 'q.e' 1.sh      #. 代表除了\n意外的任意字符

[root@localhost ~]# grep 'q.*e' 1.sh   #.* 匹配任意字符大于等于0次(这里代表q任意字符任意长度e)

 匹配中括号里的内容

[xxx]匹配中括号里的列表中的任意一个字符
 
[xxx]*匹配中括号里的列表中任意字符大于等于0次

[root@localhost ~]# grep "1[2]" 5.sh

[root@localhost ~]# grep "1[1234567890]" 5.sh

 

 [^xxx]匹配除了中括号里的列表中的任意一个字符
[^0-9]匹配所有非数字的字符 
[^a-zA-Z]匹配所有非大小写字母的字符

[root@localhost ~]# grep "[^24680]" 5.sh   #匹配除了中括号里的列表中的任意一个字符

 对子表达式进行多次或者限定次数的匹配 

\{n\}匹配{n}前面的字符或表达式 n 次;grep必须加\;egrep不用加\.

使用grep必须使用两个\\ 

[root@localhost ~]# grep "go\{2\}d" 5.sh

[root@localhost ~]# grep "go[ola]\{2\}d" 5.sh

 

 

\{n,\}匹配{n}前面的字符或表达式至少 n 次(>=n次)
 
\{n,m\} 匹配{n}前面的字符或表达式 n至m 次(大于等于n次且小于等于m次)
 
grep必须加\;egrep不用加\.

[root@localhost ~]# grep "go\{2,\}d" 5.sh    #最少匹配两次,包含两次

[root@localhost ~]# grep "go\{2,4\}d" 5.sh   #至少匹配两次,最多四次

 

拓展正则表达式的基本用法 

支持awk和egrep使用,如果grep和sed想要正常使用(grep -E  sed -r)

元字符作用含义
+匹配前面子表达式1次及以上
匹配前面子表达式0次或者1次
()将括号中的字符串作为一个整体
|以"或"的方式匹配字符串

使用egrep不用加反斜杠;egrep等于grep -E 

 

\w :匹配包括下划线的任何单词字符。
 
\W :匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
 
grep需搭配-P使用 

[root@localhost ~]# grep -P "go\wd" 5.sh

 

 \d :匹配一个数字字符。
 
\D :匹配一个非数字字符。等价于 [^0-9]。        
 
grep需搭配-P使用

 

\s :空白符。
 
\S :非空白符
 
grep需搭配-P使用 

[root@localhost ~]# grep -P "go\Sd" 5.sh

扩展元字符

(支持的工具:egrep、awk     )grep -E   sed -r

+ 匹配+前面的字符或表达式至少1次(大于等于1次{1,})
[root@localhost ~]# grep -E "go+d" 5.sh

[root@localhost ~]# grep -E "go{1,}d" 5.sh

 

? 匹配?前面的字符或表达式0次或1次({0,1})
[root@localhost ~]# grep -E "goo?d" 5.sh

[root@localhost ~]# grep -E "goo{0,1}d" 5.sh

 

()  将()里面的表达式作为一个整体 
[root@localhost ~]# grep -E "g(oo)*d" 5.sh

| 以或的方式匹配字符串 
[root@localhost ~]# grep -E "g(oa|ol|la|oo)d" 5.sh

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式微服务之springboot学习[上]

文章目录 SpringBoot基本介绍官方文档springboot是什么?springboot快速入门需求/图解说明完成步骤快速入门小结 Spring SpringMVC SpringBoot的关系梳理关系如何理解 -约定优于配置 依赖管理和自动配置依赖管理什么是依赖管理修改自动仲裁/默认版本号 starter场景启动器starte…

CSDN智能总结助手

github项目地址: https://github.com/anjude/little-demo/tree/master 获取CSDN的user name和user token 打开csdn,打开控制台 - Application - Cookies,找到domain为blog.csdn.net的cookie,复制user_name和user_token的值 把上…

【计网】广播域和冲突域

一、相关概念 1.各层次设备 2.冲突域 2.1定义 冲突域通俗来讲就是在同一个网络中,两台设备同时传输的话会产生冲突。位于OSI的第一层:物理层 例如在集线器场景下,集线器属于物理层设备,它不具备交换机的功能,当收到节…

PIM Anycast RP(PIM实现)

拓扑图 配置 配置全局使能组播路由 配置OSPF 配置PIM-SM 配置anycast-rp,Loopback 1为Anycast-RP地址,Loopback 0为Anycast-RP本地地址 配置IGMP sysname AR1 # multicast routing-enable # interface GigabitEthernet0/0/0ip address 10.1.12.1 2…

删除重复的电子邮箱-力扣

题目 答案 delete p1 from Person as p1 ,Person as p2 where p1.email p2.email AND p1.id>p2.id; 解析 按照题目删除即可,注意删除的是一条,所以直接是person p1 即可 此处不能用distinct ,其一般与select相互使用。

遍历列表

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 遍历列表中的所有元素是常用的一种操作,在遍历的过程中可以完成查询、处理等功能。在生活中,如果想要去商场买一件衣服&#…

C++ RPC ORM 高速解析

支持所有常用编程语 https://capnproto.org/GitHub - capnproto/capnproto: Capn Proto serialization/RPC system - core tools and C library https://capnproto.org/capnproto-c-win32-1.0.2.zip 常用命令: capnp help capnp compile -oc myschema.capn…

Qt代码初识

文章目录 Qt代码初识1. Qt Hello World 程序1.1 使⽤ "按钮" 实现1.1.1 纯代码⽅式实现1.1.2 可视化操作实现 1.2 使⽤ "标签" 实现1.2.1 纯代码⽅式实现1.2.2 可视化操作实现 2. 项⽬⽂件解析2.1 .pro ⽂件解析2.2 widget.h ⽂件解析2.3 main.cpp ⽂件解析…

防火墙技术基础篇:解析防火墙的网络隔离机制

防火墙技术基础篇:解析防火墙的网络隔离机制 网络安全在现代社会中扮演着重要的角色,保护网络系统、用户和数据免受未经授权的访问、破坏和窃取。个人、企业和国家都需要加强网络安全意识,采取有效措施保护自身的网络安全。随着网络攻击手段…

VS2022通过C++网络库Boost.asio搭建一个简单TCP异步服务器和客户端

基本介绍 上一篇博客我们介绍了通过Boost.asio搭建一个TCP同步服务器和客户端,这次我们再通过asio搭建一个异步通信的服务器和客户端系统,由于这是一个简单异步服务器,所以我们的异步特指异步服务器而不是异步客户端,同步服务器在…

SQL靶场搭建

概述 简单介绍一下SQL靶场的搭建,以及在搭建过程中遇到的一些问题。使用该软件搭建靶场相对简单,适合新手小白。当然,也可以在自己的虚拟机下进行搭建,相对来说就较为复杂。本章主要讲解使用Phpstudy进行SQL靶场搭建。 这里我推…

SpringBoot 实现 RAS+AES 自动接口解密

一、讲个事故 接口安全老生常谈了 过年之前做了过一款飞机大战的H5小游戏,里面无限模式-需要保存用户的积分,因为使用的Body传参,参数是可见的。 为了接口安全我,我和前端约定了传递参数是:用户无限模式的积分“我们…

一个简约高级视差效果PR动态图文开场视频模板

这是一个高质量且易于定制的pr模板。具有模块化结构,可以轻松更改内容。包括视频教程,即使是新手小白也可以轻松套用模板制作视频。 主要特点: 水平(19201080)和垂直(10801920)分辨率&#xff…

实验二 电子传输系统安全-进展2

上周任务完成情况(代码链接,所写文档等) 重新调通电子公文传输系统部署gmssl学习生成SM2证书学习gmssl中的CTLS实现将数据库从SqlServer迁移到Mysql调试Mysql驱动学习Bouncy Castle 代码链接 Mysql表设计 /* Navicat MySQL Data Transfer…

用Python pynput库捕捉每一次组合键的优雅舞步

哈喽,大家好,我是木头左! 一、初识pynput:键盘与鼠标的监控利器 当谈论计算机交互时,键盘和鼠标无疑是最常用的设备。无论是编写代码、浏览网页还是玩游戏,都依赖于这些输入设备与机器沟通。但在一些特殊的…

【AI大模型】Embedding模型解析 文本向量知识库的构建和相似度检索

🚀 作者 :“大数据小禅” 🚀 文章简介 :本专栏后续将持续更新大模型相关文章,从开发到微调到应用,需要下载好的模型包可私。 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 目…

K8S/ hpa分享

在 Kubernetes 中,HorizontalPodAutoscaler 自动更新工作负载资源 (例如 Deployment 或者 StatefulSet), 目的是自动扩缩工作负载以满足需求。 hpa的使用本身还是很简单的 示例如下: 官网示例 apiVersion: apps/v1 k…

【三数之和】python,排序+双指针

暴力搜索3次方的时间复杂度,大抵超时 遇到不会先排序 排序双指针 上题解 照做 class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:res[]nlen(nums)#排序降低复杂度nums.sort()k0#留两个位置给双指针i,jfor k in range(n-2):if nums[k]…

shell常见指令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、认识C语言二、操作系统 1.引入库2.读入数据总结 前言 嵌入式学习前期C基础内容总结 一、认识C语言 C语言是一门十分流行的编程语言,由美国贝尔…

Web3的时代:科技变革助力物联网智能化

引言 随着人类社会的不断发展,科技进步已经成为推动社会发展的重要引擎之一。在这个信息化时代,互联网已经深刻改变了人们的生活方式和工作方式,而Web3技术的出现,则为我们带来了全新的科技革命。本文将探讨Web3时代对物联网智能…