grepegrep及相应的正则表达式和用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grepegrep及相应的正则表达式和用法相关的知识,希望对你有一定的参考价值。

1.grep及egrep简介

     grep全称是Global Regular Expressiongrep是一种强大的文本搜索工具,用于搜索和过滤特定的字符。支持正则表达式,可以帮助我们实现过滤,筛选的常见功.并且能与多种命令通过管道相互配合使用,灵活方便。它的使用权限是所有用户.

1.1 正则表达式(Regular Expression REGEX

    在学习grep工具之前我们先学习正则表达式,一般来说只要学好了正则表达式,就能发挥出grep等工具的巨大作用。

    正则表达式(Regular Expression, REGEX)由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能。简单来说就是按特定的符合某种语法规则语义的字符串。它只是一种思想一种表达方式并不是一个工具。正则表达式可以帮我们实现过滤筛选等常见功能。只要我们使用的工具支持这种表达方式,那么这个工具就能处理正则表达式的字符串。

1.1.1正则表达式的分类

     正则表达式分为基本正则表达式和扩展正则表达式。他们大致可以分为字符匹配,次数匹配位置锚定与分组和引用。下面分别介绍一下他们的元字符表示方法。

  a.字符引用

  .匹配任意单个字符
[  ]匹配范围内的任意单个字符
[^ ]匹配范围外的任意

 例1:在文件/etc/passwd文件中显示以r开头,t结尾中间隔着任意字符的行。

  技术分享

b.次数匹配

      用在要指定其出现的次数的字符后面,用限制其前面的字符要出现的次数;默认工作于贪婪模式。

基本正则表达式
扩展正则表达式

*

任意前面的字符任意次

*任意前面的字符任意次

\+

匹配前面的字符至少1

+匹配前面的字符至少1

\?

匹配前面的0次或1次,即前面的字符可有可无

匹配前面的0次或1次,即前面的字符可有可无

\{m\}

其前面的字符出现m次,m为非负整数

{m}其前面的字符出现m次,m为非负整数

\{0,n\}

至少m

{m,0}至少m

\{m,\}

至多n

{0,n}至多n

\{m,n\}

其的字符出现m次,m为非负整数;[m,n]前面

{m,n}其的字符出现m次,m为非负整数;[m,n]前面

例:显示/etc/passwd文件中有r且r后跟1个或2个o的行。

技术分享 c.位置锚定

      限制使用模式搜索文本,限制模式所匹配到的文本只能出现于目标文本的哪个位置。

基本正则表达式
扩展正则表达式
^

行首锚定;用于模式的最左侧,^PATTERN

^行首锚定;用于模式的最左侧,^PATTERN
$

行尾锚定;用于模式的最右侧,PATTERN$

$行尾锚定;用于模式的最右侧,PATTERN$
\<或\b

词首锚定,用于单词模式的左侧,格式为\<PATTERN, \bPATTERN

\<或\b行尾锚定;用于模式的最右侧,PATTERN$
\<PATTERN\>

单词锚定

\<PATTERN\>单词锚定
>\或\b

词尾锚定,用于单词模式的右侧,格式为PATTERN\>, PATTERN\b

>\或\b词尾锚定,用于单词模式的右侧,格式为PATTERN\>, PATTERN\b
例:在/etc/passwd文件中查找包含root的行。

技术分享

d.分组及引用。

      有时我们需要把一个整体来进行组合,然后基于组合成的字符整体来进行匹配,这就需要进行分组与引用了。

   1.分组

   (PATTERN)将此PATTERN匹配到的字符当作一个不可分割整体进行处理;

    2引用

     分组括号中的模式匹配到的字符会被正则表达式引擎自动记录于内部的变量中,这些变量是\1, \2, \3, ...\n

\n:模式中第n个左括号以及与之匹配的右括号之间的模式所匹配到的字符串;(不是模式,而是模式匹配的结果),这样我们就可以将整体进行后向引用了。

例如:pat1\(pat2\)pat3\(pat4\(pat5\)pat6\)

其中\1为(pat2),\2为(pat4\pat5)……\n为(pat2\)pat3\(pat4\(pat5\)pat6\)


除此之外,egrep还支持一“|”为组分割符,这是与grep所不同的地方。

 示例:为了能更好的理解分组及后向引用,我们自己创建一个文件test。

  #vi test 输入如下内容保存退出。

技术分享

技术分享

    在test文件下查找包含(A.D)的行输出,其中“.”代表任意字符。再将前面匹配到的字符进行引用,我们会发现少了一行,这是因为引用中的“.”不再是一个人以字符,而是一个确定好的字符。


1.2 grep其他常用选项及用法示例。

     

--color=auto:对匹配到的文本着色后高亮显示;因为centos7定义了别名,所以这里我们用“/”来执行命令本身。

技术分享

-i:忽略字符大小写;

技术分享

-o:仅显示匹配 到的文本自身;

 技术分享

-v, --invert-match:反向匹配;

-q, --quiet, --silient:静默模式,不输出任何信息;

-E, --extended-regexp:支持使用扩展正则表达式

-F, --fixed-strings:支持使用固定字符串,不支持正则表达式,相当于fgrep;

-G, --basic-regexp:支持使用基本正则表达式;

-P, --perl-regexp:支持使用pcre正则表达式;

-e PATTERN, --regexp=PATTERN:多模式机制;

技术分享

-f FILE, --file=FILE:FILE为每行包含了一个pattern的文本文件,即grep script;

-A NUM, 显示匹配到的行以及后num行。

技术分享

-B NUM, 显示匹配到的行以及前num行。

-C NUM,显示匹配到的行以及前后各num行。


技术分享


本文出自 “11243407” 博客,请务必保留此出处http://11253407.blog.51cto.com/11243407/1749597

以上是关于grepegrep及相应的正则表达式和用法的主要内容,如果未能解决你的问题,请参考以下文章

grepegrep及相应的正则表达式和用法

grepegrep及相应的正则表达式和用法

linux下grepegrep及相应的正则表达式和用法

grepegrep及相应的正则表达式和用法

Linux中的grepegrep及相应的正则表达式和用法

grepegrep及相应的正则表达式用法