码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • grep基础正则使用


    文章目录

          • 正则表达式
          • 1 ^ 尖角号 表示匹配以尖角号后面的单词开头的行
          • 2 $ 美元符 表示匹配以美元符后面的单词结尾的行
          • 3 ^$ 组合符 表示空行
          • 4 . 点号 匹配任意一个且只有一个字符
          • 5 \ 转义字符 让有特殊含义的字符输出自身
          • 6 * 星号 前一个字符连续出现0次或N次
          • 7 .* 组合符 匹配所有内容、任何内容、任意内容
          • 8 [abc] 中括号匹配[]集合内的任意一个字符
          • 9 [^abc] 匹配不包含^后的任意字符

    正则表达式

    字符作用
    ^表示匹配以尖角号后面的单词开头的行
    $表示匹配以美元符后面的单词结尾的行
    ^$表示空行
    .匹配任意一个且只有一个字符
    \让有特殊含义的字符输出自身
    *重复前一个字符(连续出现)0次或N次
    .*匹配所有内容
    ^.*匹配任意多个字符开头的内容
    .*$匹配任意多个字符结尾的内容
    [abc]匹配[]集合内的任意一个字符
    [^abc]不匹配^后的任意字符

    1 ^ 尖角号 表示匹配以尖角号后面的单词开头的行

    grep '^my' oldboy.txt
    grep '^I' oldboy.txt
    
    • 1
    • 2

    在这里插入图片描述

    2 $ 美元符 表示匹配以美元符后面的单词结尾的行

    grep '448$' oldboy.txt
    grep '448' oldboy.txt
    
    • 1
    • 2

    在这里插入图片描述

    grep 'm$' oldboy.txt
    cat -A oldboy.txt
    grep 'm $' oldboy.txt
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    我们使用m$没找到以m结尾的行,我们cat查看文件内容,发现是以m结尾的行。我们使用cat -A查看文件中的隐藏字符发现,m后面还有空格,使用m $即可匹配

    3 ^$ 组合符 表示空行

    空格也是字符,查找含有空格的行

    grep ' ' oldboy.txt
    
    • 1

    在这里插入图片描述

    grep '^$' oldboy.txt
    grep -n '^$' oldboy.txt
    
    • 1
    • 2

    在这里插入图片描述
    显示空行一般意义不大,我们一般用-v ^$排除空行

    grep -v '^$' oldboy.txt
    grep -nv '^$' oldboy.txt
    
    • 1
    • 2

    在这里插入图片描述

    4 . 点号 匹配任意一个且只有一个字符

    grep '.' oldboy.txt
    
    • 1

    在这里插入图片描述
    这样就匹配了所有字符,由于空行不是字符,故这种方式也能排除空行

    查找以.结尾的行

    grep '.$' oldboy.txt
    
    • 1

    在这里插入图片描述
    注意,这条指令匹配的是以任何字符结尾的行,而不是以.结尾的行,于是我们需要使用转义字符\

    5 \ 转义字符 让有特殊含义的字符输出自身

    查找以.结尾的行

    grep '\.$' oldboy.txt
    
    • 1

    在这里插入图片描述

    6 * 星号 前一个字符连续出现0次或N次

    • 连续出现:0(0出现1次)、00(0出现2次)、00000(0出现5次)、asdfgh(6个字符连续出现1次)

    查找出现0次或多次的0,出现一次也算连续出现

    grep '0*' oldboy.txt
    
    • 1

    在这里插入图片描述

    为何还显示出了文件其他部分呢?

    *表示出现0次或者0次以上,出现0次,相当于是空,即没有这个字符

    在这里插入图片描述
    当grep的正则中什么都不写时,就把文件内容都显示出来了

    7 .* 组合符 匹配所有内容、任何内容、任意内容

    grep '.*' oldboy.txt
    
    • 1

    .*也可以匹配空行

    在这里插入图片描述
    我们想匹配从开头到字符t的部分,中间可以是任意字符

    grep '^.*t' oldboy.txt
    
    • 1

    在这里插入图片描述
    我们想匹配从开头到字符o的部分,中间可以是任意字符

    grep '^.*o' oldboy.txt
    
    • 1

    在这里插入图片描述
    我们本来想的是,匹配到一行第一个o即可,正则帮我们匹配到了最后一个o,这就是正则的贪心原则

    grep "^.*zx" oldboy.txt     # 从开头匹配到zx停止
    grep "fq.*$" oldboy.txt     # 从fq开始匹配到结尾
    
    • 1
    • 2

    8 [abc] 中括号匹配[]集合内的任意一个字符

    grep '[abc]' oldboy.txt
    
    • 1

    在这里插入图片描述
    匹配[abc]内任意一个字符,可我们看见匹配了ac,这是俩字符,我们显示一下匹配过程

    grep -o '[abc]' oldboy.txt
    
    • 1

    在这里插入图片描述
    a和c是分两次匹配的

    我们一般这样使用:[a-z]、[A-Z]、[0-9],用于匹配ASCII码表上相邻的字符

    grep '[a-z]' oldboy.txt
    
    • 1

    在这里插入图片描述

    grep '[a-zA-Z0-9]' oldboy.txt
    grep '[a-Z0-9]' oldboy.txt
    grep -i '[a-z0-9]' oldboy.txt    # -i不区分大小写
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    grep '[a-Z 0-9]' oldboy.txt
    grep '[a-Z,0-9]' oldboy.txt      # 匹配逗号
    
    • 1
    • 2

    []还能去掉特殊含义:[a-z|A-Z|0-9]表示匹配大小写字母和数字,以及|,有点类似于转义字符的功能

    在这里插入图片描述

    9 [^abc] 匹配不包含^后的任意字符

    在中括号里,^表示取反

    grep '[^abc]' oldboy.txt
    
    • 1

    在这里插入图片描述

    (0基础学Linux系列)2.03 Linux正则

  • 相关阅读:
    【贪心算法】 55. 跳跃游戏
    Vue状态管理 Storage Vuex Pinia
    TeX Live安装失败
    python二十行代码教你批量采集超高清 jpg
    汽车IVI中控开发入门及进阶(二十四):杰发科技AC8015
    Lumiprobe 活性染料丨环炔染料:AF488 DBCO,5 异构体
    力扣——位运算系列
    [剑指Offer] 三种方法求解找出数组中出现次数超过一半的数字
    vue3 + vite中按需使用ace-builds实现编辑器
    用Java写了一个类QQ界面聊天小项目,可在线聊天
  • 原文地址:https://blog.csdn.net/qq_42500831/article/details/126343064
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号