Shell正则表达式篇:grep和egrep

前言:

  • 正则表达式又称正规表达式、常规表达式。在代码中常简写为 regex、regexp 或 RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说, 是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。
  • 正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹 配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进 行匹配。其中普通字符包括大小写字母、数字、标点符号及一些其他符号,元字符则是指 那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符 前面的字符)在目标对象中的出现模式。
    正则表达式三剑客:grep sed awk

grep篇:

查找特定字符

查找出特定字符“the”所在位置
“-n”表示显示行号、“-i”表示不区分大小写
grep -n 查看包含有the的行显示出来
在这里插入图片描述
grep -in 查看包含有the的行(不区分大小写)全部显示出来
在这里插入图片描述
查看包含有the的行号显示出来,以”:”为分割
在这里插入图片描述
统计带有the的一共有多少行
在这里插入图片描述

利用中括号“[ ]”来查找集合字符

想要查找“this”与“thes”这两个字符串时,可以发现这两个字符串均包含“th”与“s”。此时执行以下命令即可同时查找到“this”与“thes”这两个字符串,其中“[]”中无论有几个字符, 都仅代表一个字符,也就是说“[ie]”表示匹配“i”或者e”
表示集合当中的元素选一个
grep -n ‘th[ie]s’ httpd.conf
在这里插入图片描述
若要查找重复单个字符“oo”时,需要执行以下命令,但是带有一个”o”的不会出来
在这里插入图片描述
若查找“oo”前面不是“某些字母”的字符串,只需要通过集合字符的反向选择“[^]”来实现该目的。
^放在中括号里面代表取反;过滤oo字符前面不是小r的过滤出来
在这里插入图片描述
过滤以字母(小写和大写都可以)开头的内容
在这里插入图片描述
过滤不以字母(小写和大写都可以)开头的内容
在这里插入图片描述
匹配除了数字以外所有字符的行,只要匹配上,就过滤出来
在这里插入图片描述
只要包含0-9的数字行都会输出
在这里插入图片描述
这个是先过滤出带有数字的行,在加上”v”反向过滤。也就是过滤出不带数字的行,显示出来
在这里插入图片描述

查找行首“^”与行尾字符“$”

查询以“the”字符串为行首的行,则可以通过“^”元字符来实现
在这里插入图片描述
查询以小写字母开头的行可以通过“1”规则来过滤
在这里插入图片描述
查询不以字母开头的行则使用“^[a-z]”规则,会过滤出开头带#号的行
在这里插入图片描述
“^”符号在元字符集合“[]”符号内外的作用是不一样的,在“[]”符号内表示反向选择,在“[]” 符号外则代表定位行首。反之,若想查找以某一特定字符结尾的行则可以使用“$”定位符。
执行以下命令即可实现查询以小数点(.)结尾的行
在这里插入图片描述

当查询空白行时,执行“grep -n‘^$’test.txt”命令即可
在这里插入图片描述

查找任意一个字符“.”与重复字符“*”

执行以下命令就可以查找“w??d”的字符串…代表两个字符;即共有四个字符,以 w 开头 d 结尾
在这里插入图片描述
*代表 *前面的字符出现0次或者多次

这个意思就是oo后面的o出现0此或者多次都会显示出来;不是针对前面的两个oo
在这里插入图片描述
查询以 w 开头 d 结尾,中间包含至少一个 o 的字符串
在这里插入图片描述
两个区别一下;
因为代表“*”前面的字符出现0次或者多次,所以没有o的也会显示出来
在这里插入图片描述
过滤数字的话,不管有数字还是没有都会显示出来
在这里插入图片描述
过滤出带有*的内容都会过滤出来,如果*前面都不带任何字符,就会把*当成一个字符显示出来
在这里插入图片描述
过滤出“*”后面带有字母的,过滤出来
在这里插入图片描述

查找连续字符范围“{ }”

因为“{}”在 Shell 中具有特殊意义,所以在使用“{}”字符时,需要利用转义字符“\”,将“{}”字符转换成普通字符。
查找两个“oo”的字符,对前面的字符作为参考,匹配几次
在这里插入图片描述
查询w开头d结尾,“o”出现2-5次
在这里插入图片描述
这个o至少要出现两次
在这里插入图片描述
元字符总结表:
在这里插入图片描述

egrep篇:

  • grep 命令仅支持基础正则表达式,如果使用扩展正则表达式,需要使用 egrep 或 awk 命令,egrep 命令与 grep 命令的用法基本相似。egrep 命令是一个搜索文件获得模式,使用该命令可以搜索文件中的任意字符串和符号,也可以搜索一个或多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字或一个句子

扩展正则表达式常见元字符:
在这里插入图片描述
grep可以过滤出th和s之间为i e的字符的行
在这里插入图片描述
同时egrep 也可以过滤出;egrep能做的事grep也能做;主要看谁简单
在这里插入图片描述
egrep可以过滤“wood woooood”的字符
在这里插入图片描述
grep也可以过滤出wood wooooood的字符,egrep;其中* 仅用于grep
在这里插入图片描述
?只对前面的字符出现0次或者一次
在这里插入图片描述
grep同样也可以过滤,使用转义字符
在这里插入图片描述
“|”查找多个字符;grep也同样可以,输入方法不同,结果是相同的
在这里插入图片描述
“egrep -n ‘A(xyz)+C’ httpd.conf”该命令是查询开头的"A"结尾是"C",中间有一个以上的"xyz"字符串的意思
在这里插入图片描述
区别于‘A(xyz)*C’
在这里插入图片描述


  1. a-z ↩︎

    扫描二维码关注公众号,回复: 11457060 查看本文章

猜你喜欢

转载自blog.csdn.net/Cpureman/article/details/107622125