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

正则表达式 —— Grep

文本处理三剑客:Grep、Sed、Awk

这三个工具都是基于对文本的内容进行增删改查的操作,此篇着重介绍grep与正则表达式的应用,以及扩展正则表达式。

正则表达式

什么是正则表达式?

它是由一类特殊字符以及文本字符所编写的一种模式,处理文本当中的内容;其中的一些字符不表示字符的字面含义,这些字符表示控制或者通配的功能,正则表达式可以对命令结果和文件内容都可以进行匹配。

通配符常用符号

通配符仅仅只能匹配文件名、目录名,不能匹配文件的内容;

  • *:  匹配任意一个或多个字符           例:ls  *.txt
  • ?:匹配任意一个字符                      例:ls  ?.txt
  • [ ] :匹配范围内的任意单个字符        例:touch  {a..z}.txt     ls  [a-z].txt

基本正则常用符号

基本正则:字符匹配,元字符,匹配的部分需要用引号引起来。

  • .:表示匹配任意的单个字符,可以是一个汉字   例:ls  |  grep  "abc."
  • \:表示转义符   
  • \.:   仅仅表示一个点,无其它含义
  • ():表示分组的意思    
  • \(\):这时仅表示括号
  • [ ]:匹配已指定范围内的任意单个字符     
    例:ls  |  grep  "[0-9  a-z  A-Z]"   展示所有数组以及大小写字母
  • [ ^ ]:表示取反,指定范围外的    
    例:ls  |  grep  "[A-Z0-9.]"  
  • [[ :blank: ]]:匹配空白字符(空格和tab键)
  • 例:以rc开头,任意单个字符,0-6的数字

  •  只匹配以rc.为开头的文件

  •  过滤/etc/passwd中任意的两个字符r和t

正则次数的表达式

  • *:匹配前面的字符任意次,有多少匹配多少;也称贪婪模式
  •  .*:也是匹配任意长度的字符,但是至少要有一次,不包括0次;最少前面要有一个o,否则不匹配
  •  \?:表示匹配前面的字符0次或者1次(即可有可无) 有则匹配,没有也匹配
  • \+:匹配前面的字符至少一次,最多可以无数次
  • \{n\}:匹配前面的字符=n次   精确匹配  n:表示前面字符出现的次数,多一次少一次都不行、、
  • \{m,n\}:匹配前面的字符最少m次,最多n次
  • \{,n\}:匹配前面的字符最多n次
  • \{n,\}:匹配前面的字符至少n次

匹配次数就是核心

位置锚定

以什么为开头  以什么为结尾

  • ^:以什么为开头,在模式的左侧       ^r  以r为开头
  • $:以什么最为结尾,在模式的右侧    r$  以r为结尾
  • ^  root  $:用于匹配整行,而且整行中只有一个 root才显示
  • ^$:匹配空行
  • 词首锚定:>或者 \b  
  • 词尾铆钉:<或者 \b  

推荐用\b 统一来判断词首和词尾

 例:

 输入词首就是词首搜索,输入词尾就是词尾搜索

\ |:表示逻辑或

 

扩展正则表达式

扩展正则与基本正则意思相同,仅仅区别于写法上的不同;通常使用扩展正则,更加的直观。

它的表达格式为:egrep  或  grep -E   所有的 \  斜杠都可去掉

http://www.lryc.cn/news/100797.html

相关文章:

  • STC12C5A系列单片机片内看门狗的应用
  • C语言指针详解
  • RTPS规范v2.5(中文版)
  • LeetCode102.Binary-Tree-Level-Order-Traversal<二叉树的层序遍历>
  • yolov8系列[五]-项目实战-yolov8模型无人机检测
  • Redis 笔记,基本数据类型、持久化、主从、集群等等问题
  • JDK,JRE,JVM三者的关系
  • 行为型-命令模式(Command Pattern)
  • 总结942
  • MFC自定义控件使用
  • 【学习笔记】「ROI 2018 Day 2」无进位加法
  • 分布式I/O,IT和OT融合少不了它
  • 主干网络篇 | YOLOv8 更换主干网络之 VanillaNet |《华为方舟实验室最新成果》
  • AD20. 如何给元器件设计、添加3D模型
  • C++笔记之vector的底层实现和扩容机制
  • JavaSE - Sting类
  • zotero+overleaf插入参考文献
  • C语言每天一练----输出水仙花数
  • Linux-Shell
  • Python读取csv、Excel文件生成图表
  • 虚拟机中Linux的IP地址配置详解
  • Codeforces Round 889 (Div. 2) 题解
  • 系统学习Linux-MySQL用户权限管理(三)
  • 【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境4
  • 阿里云NVIDIA A100 GPU云服务器性能详解及租用费用
  • 数字身份、分布式存储、跨链技术等将如何推动Web3数据的发展?
  • Ubuntu 新增2T 硬盘,配置自动挂载
  • Windows下安装HBase
  • 在家构建您的迷你 ChatGPT
  • Cisco IOS操作(红茶三杯CCNA)