Shell正则表达式文本处理三剑客-----grep

一、grep正则表达式
1.基础正则表达式示例
下面的操作需要提前准备一个名为 httpd.txt 的测试文件,文件具体内容如下所示
在这里插入图片描述
1)查找特定字符
“-n”表示显示行号
“-i”表示不区分大小写
命令执行后,符合匹配标准的字符,字体颜色会变为红色
在这里插入图片描述
在这里插入图片描述
若反向选择,如查找不包含“the”字符的行,则需要通过 grep 命令的“-vn”选项实现
在这里插入图片描述
2)利用中括号“[]”来查找集合字符
“[]”中无论有几个字符,都仅代表一个字符,也就是说“[io]”表示匹配“i”或者“o”
在这里插入图片描述
“[^]”表示集合字符的反向选择
实现该目的,如执行“grep –n ‘[ ^i ] n’ httpd.txt”命令表示在 httpd.txt 文本中查找“n” 前面不是“i”的字符串。
在这里插入图片描述
查找包含数字的行可以通过“grep –n ‘[0-9]’ httpd.txt”命令来实现

3)查找行首“^”与行尾字符“$ ”
基础正则表达式包含两个定位元字符: “ ^ ”(行首)与“$”(行尾)。在上面的示例中,查询“In”字符串时出现了很多包含“In”的行,如果想要查询以“In”字符串为行首的行,则可以通过“^”元字符来实现。
在这里插入图片描述

“^”符号在元字符集合“[]”符号内外的作用是不一样的,在“[]”符号内表示反向选择,在“[]”符号外则代表定位行首。反之,若想查找以某一特定字符结尾的行则可以使用“$”定位符。
当查询空白行时,执行“grep –n ‘^ $’ test.txt”命令即可
在这里插入图片描述
4)查找任意一个字符“.”与重复字符“
前面提到,在正则表达式中小数点(.)也是一个元字符,代表任意一个字符。例如, 执行以下命令就可以查找“w??d”的字符串,即共有四个字符,以 w 开头 d 结尾
在这里插入图片描述
在上述结果中,“wood”字符串“w…d”匹配规则。若想要查询 oo、ooo、ooooo 等资料,则需要使用星号( * )元字符。但需要注意的是,“ * ”代表的是重复零个或多个前面的单字符
在这里插入图片描述
5)查找连续字符范围“{}”
在上面的示例中,我们使用“.”与“
”来设定零个到无限多个重复的字符,如果想要限制一个范围内的重复的字符串该如何实现呢?例如,查找三到五个 o 的连续字符,这个时候就需要使用基础正则表达式中的限定范围的字符“{}”。因为“{}”在 Shell 中具有特殊 意义,所以在使用“{}”字符时,需要利用转义字符“\”,将“{}”字符转换成普通字符。 “{}”字符的使用方法如下所示。
(1)查询两个 o 的字符

(2)查询以 w 开头以 d 结尾,中间包含 2~5 个 o 的字符串。

(3)查询以 w 开头以 d 结尾,中间包含 2 以上 o 的字符串。

查询任意数字所在行。

二、扩展正则表达式
egrep 命令与 grep 命令的用法基本相似。egrep 命令是一个搜索文件获得模式,使用该命令可以搜索文件中的任意字符串和符号,也可以搜索一个或多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字或一个句子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:egrep中元字符不可以用grep使用,反之,可以用egrep使用grep元字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值