详解 linux 正则表达式(以grep为例)

本文深入解析Linux中的正则表达式,通过grep命令举例,涵盖基础正则表达式概念、语系影响、常用正规表示法练习及字符汇总,帮助读者掌握字符串处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:《鸟哥的linux私房菜—基础篇》

1 什么是正则表达式?


**正则表达式(Regular Expression ,RE)**是透过一些特殊字符的排列,用以 [搜寻/取代/删除] 一列或多列文字字符串,简单地说,正则表达式就是用在字符串处理上面的一项 [表达式]
用途:利用正则表达式的功能将重要信息摘取出来,便于查阅。

说明:正则表达式基本上是一种 [表示法],只要工具程序支持,那么该工具程序就可以用来作为正则表达式的字符串处理之用。例如 vi grep awk sed 支持正则表达式,cp ls等指令不支持,只能使用bash自身的通配符

2 基础正则表达式


2.1 语系对正则表达式的影响

例如,在英文大小写的编码顺序中,zh_TW.big5及C这两种语系的输出结果分别如下:

  • LANG=C : 0 1 2 3 4 … A B C D…Z a b c d … z
  • LANG=zh_TW.big5 : 0 1 2 3 4 … a A b B c C …z Z

【注】:底下的练习都是使用 LANG =C来进行
为了避免这样编码所造成的英文与数字的摘取问题,需要了解一些特殊符号:
在这里插入图片描述

2.2 使用grep

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:grep在数据中查询一个字符串时,是以 ** ”整行“为单位 ** 来进行数据的撷取的。

2.3 基础正规表示法练习

我们处理的文件以书中提供的这个txt为例
http://linux.vbird.org/linux_basic/0330regularex/regular_express.txt

搜寻特定字符串
在这里插入图片描述
反向选择
在这里插入图片描述
搜索特定字符串(不区分大小写)
在这里插入图片描述
利用中括号[]搜寻集合字符
在这里插入图片描述
[]里面不论有几个字符,它都代表某一个字符
想要搜索包含oo的字符
在这里插入图片描述
不想要oo前面有g
在这里插入图片描述
假设oo前不想有小写字符
在这里插入图片描述
要求字符串是数字
在这里插入图片描述
在这里插入图片描述
考虑到语系对于编码的影响,上述两个例子也可以这样:
在这里插入图片描述
查询只在行首列出的the
在这里插入图片描述
想要开头是小写字符的那一行
在这里插入图片描述
也可以这样:
在这里插入图片描述
不想开头是英文字母
在这里插入图片描述

注意: ^ 符号,在[ ]内表示反向选择,在[]之外则表示定位在行首

想要行尾为小数点(.)的那行
在这里插入图片描述
找出空白行
在这里插入图片描述
在这里插入图片描述

正则表达式中:

  • ’ . ‘ 代表 一定有一个任意字符的意思
  • ‘ * ’ 代表 重复前一个字符,0到无穷多次的意思,为组合形态

找出包含两个o以上的字符串
在这里插入图片描述
找到 g…g形式的字符串
在这里插入图片描述

在这里,‘ .* ’代表零个或多个任意字符的意思

限定连续RE字符串范围 { }
因为{ }在shell里是有特殊意义的,因此。要使用‘\’
找到两个o的字符串
在这里插入图片描述
2~5个o
在这里插入图片描述

2.4 基础正则表达式字符汇总

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 延申正则表达式

这里不做详细示例,有兴趣可以搜集资料
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值