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

参考资料:《鸟哥的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 延申正则表达式

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正则表达式是一种在文本中匹配、查找模式的强大工具,也是Linux操作系统中常用的工具之一。它可以用于文本处理、搜索、验证或者替换等任务。 Linux正则表达式的语法规则如下: 1. 基本字符匹配:使用普通字符直接匹配文本中的字符。 2. 元字符:元字符是具有特殊含义的字符,例如"."表示匹配除换行符外的任意字符,"*"表示匹配前面的字符零次或多次。 3. 字符类:使用方括号来定义一个字符类,方括号内的字符表示任意一个字符,例如"[abc]"表示匹配字符"a"、"b"或"c"。 4. 反向字符类:在方括号内使用"^"表示取反,例如"[^abc]"表示匹配除"a"、"b"、"c"之外的任意字符。 5. 转义字符:使用反斜杠加上特殊字符来匹配这些特殊字符本身,例如"\."匹配字符"."。 6. 重复限定符:使用重复限定符可以指定一个模式出现的次数,例如"*"表示零次或多次,"+"表示一次或多次,"?"表示零次或一次。 7. 分组:使用小括号来分组表达式,分组内的模式被当作一个整体进行处理。 8. 锚点:使用锚点可以限制匹配的位置,例如"^"表示匹配文本开头,"$"表示匹配文本结尾。 在Linux中,可以使用多个工具来处理正则表达式,例如grep、sed、awk等。grep命令是最常用的工具之一,用于在文本中搜索匹配正则表达式的行。sed命令可以用来实现对文本的编辑和转换,awk则是用于在文本中查找并处理模式的工具。 总结来说,Linux正则表达式是一种强大的在文本中匹配和处理模式的工具,掌握它可以帮助我们高效地处理文本数据。了解其基本语法规则,并熟练运用相关工具,可以提升日常工作中的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值