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

【shell编程入门】正则表达式

 正则表达式

特殊字符描述
[]方括号表达式,表示匹配的字符集合,例如 [0-9][abcde]
()标记子表达式起止位置
*匹配前面的子表达式零或多次
+匹配前面的子表达式一或多次
?匹配前面的子表达式零或一次
\转义字符,除了常用转义外,还有:\b 匹配单词边界;\B 匹配非单词边界等
.匹配除 \n(换行)外的任意单个字符
{}标记限定符表达式的起止。例如 {n} 表示匹配前一子表达式 n 次;{n,} 匹配至少 n 次;{n,m} 匹配 n 至 m 次
|表明前后两项二选一
$匹配字符串的结尾
^匹配字符串的开头,在方括号表达式中表示不接受该方括号表达式中的字符集合

正则表达式实例

 匹配Email地址

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

 ^[a-zA-Z0-9._%+-]+的解释:

  • ^: 表示匹配字符串的开头。
  • [a-zA-Z0-9._%+-]: 是一个字符类,包含了大小写字母(a-zA-Z)、数字(0-9)以及一些特殊字符(._%+-)。
  • +: 表示前面的字符类中的字符可以出现一次或多次。

这个正则表达式的含义是:匹配以大小写字母、数字、点(.)、下划线(_)、百分号(%)、加号(+)或减号(-)开头的字符串。

匹配身份证号码

^(^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])([0-2][1-9]|10|20|30|31)\d{3}(\d|X|x)$

^[1-9]\d{5} 是一个正则表达式,用于匹配一个六位的正整数。让我们解释一下这个正则表达式的各个部分:

  • ^: 表示匹配字符串的开头。
  • [1-9]: 匹配第一个字符是1到9之间的任意一个数字。
  • \d: 匹配任意数字(等同于[0-9])。
  • {5}: 表示前一个元素(\d)必须重复出现5次。

 shell脚本与正则表达式结合的实例

 有一个文本文件 data.txt 包含一些数据,每一行都有一个字符串,你想从中提取符合特定条件的数据。

#!/bin/bash# 文件路径
file="data.txt"# 匹配并提取所有包含数字的行
echo "Lines containing numbers:"
grep -E "[0-9]" "$file"# 匹配并提取所有包含邮箱地址的行
echo -e "\nLines containing email addresses:"
grep -E "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" "$file"# 匹配并提取所有包含日期的行 (YYYY-MM-DD)
echo -e "\nLines containing dates (YYYY-MM-DD):"
grep -E "\b\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])\b" "$file"# 匹配并提取所有以"Product:"开头的行,提取产品名称
echo -e "\nProduct names:"
grep -E "^Product: (.+)$" "$file" | sed -E 's/^Product: (.+)$/\1/'# 匹配并提取包含特定关键字的行,并统计其出现次数
keyword="important_keyword"
echo -e "\nLines containing the keyword '$keyword' and their count:"
grep -E "$keyword" "$file" | tee /dev/tty | wc -l

相关文章:

【shell编程入门】正则表达式

正则表达式 特殊字符描述[]方括号表达式,表示匹配的字符集合,例如 [0-9]、[abcde]()标记子表达式起止位置*匹配前面的子表达式零或多次匹配前面的子表达式一或多次?匹配前面的子表达式零或一次\转义字符,除了常用转义外,还有&am…...

高效火情监测,科技助力森林防火【数字地球开放平台】

数字地球开放平台-以卫星遥感为核心的空天信息服务开放平台 (geovisearth.com) 2019年3月30日,四川省凉山州木里县爆发了一场森林火灾,火点位于海拔3800米左右,地形险峻、坡度陡峭、谷深难以抵挡火势。在扑救的过程中,27名森林消防…...

第14章_集合与数据结构拓展练习(前序、中序、后序遍历,线性结构,单向链表构建,单向链表及其反转,字符串压缩)

文章目录 第14章_集合与数据结构拓展练习选择填空题1、前序、中序、后序遍历2、线性结构3、其它 编程题4、单向链表构建5、单向链表及其反转6、字符串压缩 第14章_集合与数据结构拓展练习 选择填空题 1、前序、中序、后序遍历 分析: 完全二叉树: 叶结点…...

WEB前端3D变换效果以及如何应用js代码

WEB前端DAY8 变换效果3d <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>body{/* 视距&#xff1a;设置距离xy轴构成的平面有多少像素距离 */perspective: 500px;}div{/* 设置变化效果为3d *…...

Linux中的新建用户、切换用户

目录 一、Linux系统中有哪些用户 二、新建普通用户 三、root账号与普通账号的切换 一、Linux系统中有哪些用户 1.root 超级管理员&#xff08;不受权限约束&#xff09; 2.其他用户 普通用户&#xff08;受到权限约束&#xff09; 二、新建普通用户 创建新用户 sudo user…...

Vue3使用

1、列表实现 <el-table :data"tableData" border style"width: 100%" selection-change"handleSelectionChange" :header-cell-style"{text-align:center}"><el-table-column type"selection" width"55"…...

BindingException: Invalid bound statement (not found): xxMapper.deleteBatchIds

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): xxMapper.deleteBatchIds 在使用mybatisplus的deleteBatchIds方法的时候&#xff0c;发生如下异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): …...

开源图床LightPicture搭建本地图片管理系统并实现无公网IP远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…...

黑马苍穹外卖学习Day10

文章目录 Spring Task介绍cron表达式入门案例 订单状态定时处理需求分析代码开发功能测试 WebSocket介绍入门案例 来单提醒需求分析代码开发 客户催单需求分析代码开发 Spring Task 介绍 cron表达式 入门案例 订单状态定时处理 需求分析 代码开发 新建一个task包里面编写代码…...

[数据结构 - C++] 红黑树RBTree

文章目录 1、前言2、红黑树的概念3、红黑树的性质4、红黑树节点的定义5、红黑树的插入Insert6、红黑树的验证7、红黑树与AVL树的比较附录&#xff1a; 1、前言 我们在学习了二叉搜索树后&#xff0c;在它的基础上又学习了AVL树&#xff0c;知道了AVL树是靠平衡因子来调节左右高…...

《WebKit 技术内幕》学习之十(2): 插件与JavaScript扩展

2 Chromium PPAPI插件 2.1 原理 插件其实是一种统称&#xff0c;表示一些动态库&#xff0c;这些动态库根据定义的一些标准接口可以跟浏览器进行交互&#xff0c;至于这个标准接口是什么都可以&#xff0c;重要的是大家都遵循它们&#xff0c;NPAPI接口标准只是其中的一种&a…...

【头歌-数据分析与实践-python】数据分析与实践-python——python基础

注意 &#xff1a; 本文档仅供参考使用&#xff0c;本章节程序绝大多数程序面向对象输出&#xff0c;一旦测试用例改变&#xff0c;会导致无法通过&#xff0c;请悉知 ! ! ! 请勿盲目使用 数据分析与实践-python——python基础 数据分析与实践-python——python基础 数据分析与…...

【数据库原理】(37)Web与数据库

随着网络的高速发展和网络服务的日趋完善&#xff0c;网络上的信息量呈几何级数增长。为了有效地组织、存储、管理和使用网上的信息&#xff0c;数据库技术被广泛地应用于网络领域。特别是在Internet上&#xff0c;已建立了数以万计的网站&#xff0c;其中大中型网站的后台大多…...

STM32 TIM输出比较、PWM波形

单片机学习&#xff01; 目录 一、输出比较简介 二、PWM简介 三、输出比较通道 3.1通用定时器的输出比较部分电路 3.2高级定时器的输出比较部分电路 四、输出模式控制器 五、PWM基本结构 六、PWM参数计算 总结 前言 文章讲述STM32定时器的输出比较功能&#xff0c;它主…...

React16源码: React中的updateClassComponent的源码实现

ClassComponent 的更新 1 &#xff09; 概述 在 react 中 class component&#xff0c;是一个非常重要的角色它承担了 react 中 更新整个应用的API setStateforceUpdate 在react当中&#xff0c;只有更新了state之后&#xff0c;整个应用才会重新进行渲染在 class component 中…...

Mybatis 动态SQL(set)

我们先用XML的方式实现 : 把 id 为 13 的那一行的 username 改为 ip 创建一个接口 UserInfo2Mapper ,然后在接口中声明该方法 package com.example.mybatisdemo.mapper; import com.example.mybatisdemo.model.UserInfo; import org.apache.ibatis.annotations.*; import jav…...

Ubuntu18.04在线镜像仓库配置

在线镜像仓库 1、查操作系统版本 rootubuntu:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic 2、原文件备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 3、查…...

多数据源配置H2 Mysql

H2->Mysql数据迁移 需求背景环境说明实现过程配置调整原配置修改配置 代码调整新增DatasourceConfig配置类使用secondaryJdbcTemplate 需求背景 最近有一需求&#xff0c;原本项目中由于某些原因使用嵌入式数据库H2&#xff0c;鉴于嵌入式数据库可靠性以及不方便管理等因素…...

【ASP.NET Core 基础知识】--路由和请求处理--路由概念(一)

在Web应用中&#xff0c;路由是一个至关重要的概念&#xff0c;它负责将用户的请求映射到相应的处理程序&#xff0c;以确保正确的页面或资源被呈现给用户。通过将用户请求与适当的处理程序关联起来&#xff0c;使得应用能够以有序和可维护的方式响应用户的操作。 一、ASP.NET…...

【Unity】RayMarching体积云理论学习

RayMarching 体积云 RayMarching 是一种处理体积物体的方法 RayMarching 体积云的制作是基于屏幕后处理 屏幕空间重建世界坐标 目的是把屏幕坐标的每一个像素点转化成Unity世界坐标&#xff0c;可以得到射线的方向 如何在需要渲染的物体或者场景中使用RayMarching&#xff…...

魔兽争霸3终极优化指南:WarcraftHelper专业级性能提升方案

魔兽争霸3终极优化指南&#xff1a;WarcraftHelper专业级性能提升方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代硬件上的…...

Token工厂:无锡部署昇腾384超节点算力集群,制造Token

AI智能体正在成为人工智能发展新范式&#xff0c;Token调用量暴增&#xff0c;拉动算力产业链资本开支迅猛加速。据央视新闻&#xff0c;今年3月&#xff0c;我国日均Token调用量超140万亿&#xff0c;相比2024年初增长1000多倍。AI模型使用成本水涨船高&#xff0c;不少从业者…...

别再只会用DC-DC了!手把手教你用电荷泵搞定液晶屏的VGH和VGL电压

电荷泵实战&#xff1a;低成本实现LCD屏VGH/VGL电压的工程方案 在TFT-LCD驱动电路设计中&#xff0c;VGH&#xff08;栅极开启电压&#xff09;和VGL&#xff08;栅极关闭电压&#xff09;的生成一直是硬件工程师面临的挑战。传统方案多依赖DC-DC转换器&#xff0c;但面对16.4V…...

2026山东大学软件学院项目实训(六)

一、基本信息组号&#xff1a;69组员&#xff1a;李重昊负责模块&#xff1a;AI 工作流 —— 图片收集节点二、任务概述在 LangGraph4j 工作流中完成图片收集节点开发&#xff0c;根据用户自然语言需求自动规划并收集网站所需图片&#xff0c;为后续提示词增强与代码生成提供素…...

Jetson TX2 NX扩容实战:用M.2固态硬盘告别存储焦虑(附完整分区与挂载命令)

Jetson TX2 NX存储扩容终极指南&#xff1a;M.2固态硬盘实战与性能调优 当你在Jetson TX2 NX上部署YOLOv5模型时&#xff0c;突然发现eMMC存储空间不足——这个场景对于许多边缘计算开发者来说再熟悉不过。16GB或32GB的板载存储&#xff0c;在当今动辄几个GB的AI模型和数据集面…...

OpenRAM SRAM编译器:如何用开源工具革新芯片内存设计流程

OpenRAM SRAM编译器&#xff1a;如何用开源工具革新芯片内存设计流程 【免费下载链接】OpenRAM An open-source static random access memory (SRAM) compiler. 项目地址: https://gitcode.com/gh_mirrors/op/OpenRAM 在当今高性能计算和AI芯片设计中&#xff0c;片上SR…...

C++高精度算法的简单实现

一、基本原理1、存储方式采用数字记录高精度数字&#xff0c;数组的第一个元素存储数据长度&#xff0c;比如记录数字为1024示例如下&#xff1a;2、计算方式采用模拟立竖式计算&#xff0c;比如加法的计算流程&#xff0c;如下图所示10249000&#xff1a;这里只给出加法的计算…...

中国500万医生的新AI:顶刊独家联手,卷的就是证据源

金磊 发自 杭州量子位 | 公众号 QbitAI很反差。明明是一场AI的发布会&#xff0c;台下却坐满了医学界的大佬们&#xff1a;有北大、清华的&#xff0c;有浙江、上海的&#xff0c;甚至医学顶刊BMJ集团的主编都来围观了……△图片由AI生成为啥会这样&#xff1f;因为阿里健康正式…...

原创丨全球主流开源模型及其衍生生态解析

作者&#xff1a;李媛媛 本文约4800字&#xff0c;建议阅读15分钟本文介绍了全球主流开源基座模型及衍生模型的特点、应用与趋势。在人工智能技术产业化落地加速的当下&#xff0c;开源模型已成为推动行业创新的核心力量&#xff0c;其开放、可定制的特性打破了技术壁垒&#x…...

别再死记硬背了!图解贪心算法:用‘小船过河’和‘区间覆盖’带你掌握核心思想

贪心算法实战&#xff1a;从生活场景到代码实现的思维跃迁 想象一下周末野餐时分配三明治的场景&#xff1a;你有一堆大小不一的三明治和一群饥饿的朋友。为了让最多人吃到食物&#xff0c;你会优先把小块三明治分给食量小的朋友——这种看似简单的决策背后&#xff0c;隐藏着计…...