Shell脚本之正则表达式详解(花每年都开,你还是那个你吗)

news2024/9/22 13:22:34

文章目录

  • 一、什么叫做正则表达式
  • 二、正则表达式的组成
  • 三、正则表达式分类
  • 四、正则表达式字符用法
  • 五、正则表达式练习
    • 1.匹配/etc/fstab中不是以#开头的行
    • 2.匹配/etc/passwd中以bash结尾的行
    • 3.匹配文件中025开头,后一个字符为"-"、" " 或没有,之后为5或8开头的数字,总位数为11位

一、什么叫做正则表达式

在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。
只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、sed、awk 等) 的用法。

二、正则表达式的组成

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

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

三、正则表达式分类

1.基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称BREs
2.扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs
3.Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs

四、正则表达式字符用法

1.基础正则表达式常见元字符(支持grep、egrep、sed、awk
在这里插入图片描述

注意:
正则表达式在表示时,需要加单引号’ '或双引号" "
grep 和 sed 在使用大括号 {} 表示正则表达式时,需要加转义字符 \ 表示大括号 {}

  1. 扩展正则表达式元字符(支持:egrep、grep -E、awk、sed -r)
    在这里插入图片描述

五、正则表达式练习

1.匹配/etc/fstab中不是以#开头的行

//^代表以...开头,[^#]代表匹配非#
[root@localhost1 ~]#grep "^[^#]" /etc/fstab
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=552d20a1-63f1-4209-af23-7bcdb31d1c84 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

2.匹配/etc/passwd中以bash结尾的行

[root@localhost1 ~]#grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
lisi:x:1002:1002::/home/lisi:/bin/bash
zhaoliu:x:1003:1003::/home/zhaoliu:/bin/bash
wangwu:x:1004:1004::/home/wangwu:/bin/bash

3.匹配文件中025开头,后一个字符为"-“、” " 或没有,之后为5或8开头的数字,总位数为11位

[root@localhost1 ~]#cat number.txt
02583188500
025 83242add
032-asdw223s
025-83223
032023asdwe342d
025-58347282
025-53556635342
023-82342353
025 88888888
 
//025开头 ——> ^025
//后一个字符为"-"" " 或没有(即匹配"-"" " 0次或一次) ——> [- ]?
//因为使用了?,需要给grep 加 -E 选项
//之后为5或8 ——> [58]
//总位数为11位数字,前面已经有4个,之后匹配7个任意数字 ——> [0-9]{7}$
[root@localhost1 ~]#grep -E "^025[- ]?[58][0-9]{7}$" number.txt
02583188500
025-58347282
025 88888888
 

在这里插入图片描述

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

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

相关文章

Linux进程信号(下)

目录 1:信号保存概念 2:sigset_t 3:信号集操作函数 3.1:sigprocmask 3.2:9号进程不能被阻塞(验证) 3.3:sigpending 4:信号处理 5:sigaction 6&#x…

C++知识点 -- C++的IO流

C知识点 – C的IO流 文章目录 C知识点 -- C的IO流一、C标准IO流1.多个输入数据2.多行数据读入 二、C文件IO流1.ifstream读文件2.文件读写类 三、stringstream 一、C标准IO流 C系统实现了一个庞大的类库,其中以ios为基类,其他类都是直接或间接派生自ios类…

springboot 阿里云oss图片上传和异常处理

自己去申请开通阿里云oss。 对象存储 OSS_云存储服务_企业数据管理_存储-阿里云 1.在pom.xml添加依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.14.0</version></dep…

港科夜闻|香港科大与香港资管通有限公司签署校企合作备忘录,成立校企合作基金促科研成果落地...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与香港资管通有限公司签署校企合作备忘录&#xff0c;成立校企合作基金促科研成果落地。“港科资管通领航基金”28日在香港成立&#xff0c;将致力于推动高校科研成果转化&#xff0c;助力香港国际创科中心建设。…

Fabric.js 拖拽顶点修改多边形形状

theme: smartblue 我正在参加「掘金启航计划」 本文简介 戴尬猴&#xff0c;我是德育处主任 这次要介绍的一个demo是"拖拽多边形定点修改多边形形状"。 其实 Fabric.js 官网也有这个demo&#xff1a;Fabric.js demos Custom controls, polygon 。但这个demo可能对于…

ASEMI代理ADV7611BSWZ原装ADI车规级ADV7611BSWZ

编辑&#xff1a;ll ASEMI代理ADV7611BSWZ原装ADI车规级ADV7611BSWZ 型号&#xff1a;ADV7611BSWZ 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;LQFP-64 批号&#xff1a;2023 引脚数量&#xff1a;64 工作温度&#xff1a;-40C~85C 安装类型&#xff1a;表面贴装型 …

怎么轻松地搞定Win11系统备份任务?

“我是一个电脑小白&#xff0c;不是很懂电脑的一些操作。我刚买了一台新电脑&#xff0c;它装的是Win11系统&#xff0c;我害怕它出现什么问题&#xff0c;听朋友说可以通过备份的方法保护系统&#xff0c;这是真的吗&#xff1f;有谁知道该怎么进行Win11系统备份吗&#xff1…

OJ练习第101题——柱状图中最大的矩形

柱状图中最大的矩形 力扣链接&#xff1a;84. 柱状图中最大的矩形 题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 思路 我们先嵌…

第2章 Nginx环境搭建

第2章 Nginx环境搭建 2.1 下载 免费开源版的官方网站&#xff1a;http://nginx.org Nginx 有 Windows 版本和 Linux 版本&#xff0c;但更推荐在 Linux 下使用 Nginx&#xff1b; 下载nginx-1.14.2.tar.gz的源代码文件&#xff1a;wget http://nginx.org/download/nginx-1.…

登录功能实现及文件上传下载功能补充

登录功能实现简单介绍&#xff1a; 1&#xff1a;登录时密码输入错误刷新登陆页面并提示登录信息错误&#xff1b; 2&#xff1a;输入正确用户名及密码点击sign in 登录成功。&#xff08;如果勾选remember me 只要服务器未停止&#xff0c;可以直接免登录进入欢迎页面&#x…

《光电容积法在评估高血压中的应用》阅读笔记

目录 一、论文摘要 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课…

ubuntu系统配置软件脚本自启动

背景 项目因为某些原因需要服务器自启动来执行脚本, 因此需要在ubuntu服务器上面实现自启动功能. 步骤 ubuntu作为服务器使用时&#xff0c;常常需要在机器重启时能自动启动我们开发的服务。 Ubuntu 18.04不再使用initd管理系统&#xff0c;改用systemd&#xff0c;包括用sys…

Redis:哨兵集群

目录 基于pub/sub 机制的哨兵集群组成基于pub/sub 机制的客户端事件通知由哪个哨兵执行主从切换哨兵实例是不是越多越好&#xff0c;如果同时调大 down-after-milliseconds 值&#xff0c;对减少误判是不是也有好处 部署多个哨兵实例就形成了一个哨兵集群。哨兵集群中的多个实例…

【Redis】Redis面试题

Redis的事务 什么是Redis的事务 Redis的事务是一个单独的隔离操作&#xff0c;事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中&#xff0c;不会被其他客户端发送来的命令请求所打断&#xff0c;所以Redis事务是在一个队列中&#xff0c;一次性、顺序性、排他…

人工智能基础:从机器学习到深度学习的发展和应用

随着信息技术的快速发展&#xff0c;人工智能技术已经成为当今最热门的技术之一。在人工智能技术中&#xff0c;机器学习和深度学习是最为关键的两个技术分支。本文将从机器学习的基础概念、机器学习的发展史、深度学习的基本概念、深度学习的应用以及深度学习的未来趋势等方面…

Chunjun数据同步工具初体验

chunjun (纯钧) 官方文档纯钧 chunjun 有四种运行方式&#xff1a;local、standalone、yarn session、yarn pre-job 。 运行方式/环境依赖flink环境hadoop环境localstandalone√yarn session√√yarn pre-job√√ 1.下载 官网已经提供了编译好的插件压缩包&#xff0c;可以…

【译】Java 内存泄露的构造和检测

1. 概述 在 Java 应用程序中&#xff0c;内存泄漏会导致严重的性能下降和系统故障。开发人员必须了解内存泄漏的发生原因以及如何识别和解决它们。 在本教程中&#xff0c;我们将提供一个使用失效的监听器问题作为示例来创建 Java 内存泄漏的指南。我们还将讨论各种检测内存泄…

GitHub Copilot 使用介绍

什么是 Github Copilot https://github.com/features/copilot Github Copilot 是一种人工智能辅助开发工具&#xff0c;由 GitHub 和 OpenAI 合作开发&#xff0c;旨在通过机器学习算法为开发人员提供自动化的代码提示和智能建议&#xff0c;从而提高开发效率&#xff0c;该系…

【Vue】 CLI WebStorage

CLI 本地存储 自定义事件 WebStorage(js本地存储)localStoragesessionStorage WebStorage(js本地存储) 存储内容大小一般支持5MB左右(不同浏览器可能还不一样) 浏览器端通过Window.sessionStorage 和Winodw.localStorage 属性来实现本地存储机制相关API xxxStorage.setItem(‘…

TCP协议介绍

文章目录 一、TCP协议二、TCP协议段格式4位首部长度可靠性理解32位序号和32位确认序号16位窗口大小TCP协议中的6个标记位16位紧急指针 三、TCP三次握手和四次挥手TCP的三次握手TCP的四次挥手状态变化 四、超时重传机制五、滑动窗口高速重发机制(快重传) 六、流量控制七、拥塞控…