码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Shell编程】Shell中的正则表达式


    目录

    • Shell中的正则表达式
      • 1、正则表达式与通配符
      • 2、正则表达式规则
      • 3、练习
        • 测试的文本
        • 3.1 匹配所有内容,包括空白行
        • 3.2 匹配行至少包含有一个a的行
        • 3.3 匹配行至少有俩个连续的a
        • 3.4 匹配在s与d字符中间有俩个字符的单词的行
        • 3.6 匹配所有内容
        • 3.7 匹配以大写M开头的行
        • 3.8 匹配以!结尾的行
        • 3.9 匹配所有的空行
        • 3.10 匹配s和id中间的字母要么是a要么是o的行
        • 3.11 匹配任意一个数字的行
        • 3.12 匹配用小写字母开头的行
        • 3.13 匹配没用小写字母开头的行
        • 3.14 匹配不以字母开头的行
        • 3.15 匹配使用 **.** 结束的行
        • 3.16 匹配a字母连续出现3次或大于3次的行
        • 3.14 匹配在字母sa和字母i直接有至少一个a,最多三个3

    Shell中的正则表达式

    1、正则表达式与通配符

    • 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。

    • 通配符用来匹配符合条件的文件名,通配符是完全匹配的。ls、find、cp这些命令不支持正则表达式,所以只能使用Shell自己的通配符来进行匹配了。

    2、正则表达式规则

    元字节作用
    *前一个字符匹配0次或者n次
    .匹配除了换行符外任意一个字符
    ^匹配行首,例如:^hello会匹配以hello开头的行
    $匹配行尾,例如:hello$会匹配以hello结尾的行
    []匹配中括号中指定的任意一个字符,只匹配一个字符。
    例如:{aoeiu}匹配任意一个元音字符,
    [0-9]匹配任意一位数字
    [a-z][0-9]匹配小写字和一位数构成的俩位字符
    [^]匹配除了中括号的字符以外的任意一个字符,例如:[^0-9]匹配
    任意一个为数字字符
    \转义符,用于取消将特殊符号含义取消
    \{n\}表示其前面的字符出现不小于n次,
    例如:[0-9]{2,} 表示匹配俩位数及其以上的数字
    \{n,m\}表示其前面的字符至少出现n次,最多m次,
    例如:[a-z]{6,8}匹配6到8为的小写字母

    3、练习

    测试的文本

    在这里插入图片描述

    3.1 匹配所有内容,包括空白行

    命令:grep "a*" 文件名

    效果图:
    在这里插入图片描述

    3.2 匹配行至少包含有一个a的行

    命令:grep "aa*" 文件名

    效果图:

    在这里插入图片描述

    3.3 匹配行至少有俩个连续的a

    命令:grep "aaa*" 文件名

    效果图:
    在这里插入图片描述

    3.4 匹配在s与d字符中间有俩个字符的单词的行

    命令:grep "s..d" 文件名

    效果图:

    在这里插入图片描述

    3.6 匹配所有内容

    命令:grep ".*" 文件名

    效果图:
    在这里插入图片描述

    3.7 匹配以大写M开头的行

    命令:grep "^M" 文件名

    效果图:
    在这里插入图片描述

    3.8 匹配以!结尾的行

    命令:grep "\!$" 文件名

    效果图:
    在这里插入图片描述

    3.9 匹配所有的空行

    为了方便观察 添加参数-n打印一下行号。

    命令:grep "^$" 文件名

    效果图:
    在这里插入图片描述

    3.10 匹配s和id中间的字母要么是a要么是o的行

    命令:grep "s[ao]id" 文件名

    效果图:
    在这里插入图片描述

    3.11 匹配任意一个数字的行

    命令:grep "[0-9]" 文件名

    效果图:
    在这里插入图片描述

    3.12 匹配用小写字母开头的行

    命令:grep "^[a-z]" 文件名

    效果图:
    在这里插入图片描述

    3.13 匹配没用小写字母开头的行

    命令:grep "^[^a-z]" 文件名

    效果图:

    在这里插入图片描述

    3.14 匹配不以字母开头的行

    命令:grep "^[^a-zA-Z]" 文件名

    效果图:
    在这里插入图片描述

    3.15 匹配使用 . 结束的行

    命令:grep "\.$" 文件名

    效果图:
    在这里插入图片描述

    3.16 匹配a字母连续出现3次或大于3次的行

    命令:grep "a\{3\}" 文件名

    效果图:
    在这里插入图片描述

    3.14 匹配在字母sa和字母i直接有至少一个a,最多三个3

    命令:grep "sa\{1,3\}i" 文件名

    效果图:
    在这里插入图片描述

  • 相关阅读:
    使用Tauri开发桌面应用
    <码农翻身>读书笔记
    HTML5 用FileReader对象读取文件内容
    驱动开发代码研读
    免费的 ChatGPT 网站(六个)
    linux目录与文件操作命令
    [附源码]Python计算机毕业设计SSM绝味鸭脖连锁店信息系统(程序+LW)
    JVM调优参数设置步骤
    七、组件的高级用法-组件的组合(children的用法)-高阶组件-封装组件
    方程求根之二分法
  • 原文地址:https://blog.csdn.net/qq_45254369/article/details/126896271
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号