Linux中不可或缺的“grep三人组”与正则表达式的那些事

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中不可或缺的“grep三人组”与正则表达式的那些事相关的知识,希望对你有一定的参考价值。

Linux上文本处理“三人组”

grep, egrep, fgrep:文本搜索工具;基于”pattern“对给定文本进行搜索操作;

正则表达式:Regular Expression, REGEX,由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能;

分两类:

基本正则表达式:BRE 

扩展正则表达式:ERE

grep家族:

grep:  支持使用基本正则表达式;

egrep:支持使用扩展正则表达式;

fgrep:不支持使用正则表达式;

grep命令:

作用:文本搜索工具,根据用户指定的”pattern(过滤条件)“对目标文本逐行进行匹配检查;打印出符合条件的行;

常用选项:

    --color=auto:对匹配到的文本着色后高亮显示;

    -i:忽略字符大小写;

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

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

    -E:支持扩展的正则表达式;

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

基本正则表达式元字符:

字符匹配:

.:匹配任意单个字符;

[ ]:匹配范围内的任意单个字符;

[^ ]:匹配范围外的任意单个字符;

[:digit:],[:lower:], [:upper:], [:alpha:], [:alnum:], [:space:], [:blank:], [:punct:]

匹配次数:

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

*:匹配前面的字符任意次(0,1或多次);

.*:任意长度的任意字符;

\+:匹配前面的字符至少1次;

\?:匹配前面的0次或1次,;

            \{b\}:其前面的字符出现b次,b为非负整数;

\{b,d\}:其前面的字符出现b次,b为非负整数;最多b次,最少d次

\{0,n\}:至多n次;

\{m,\}:至少m次;

位置锚定:

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

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

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

^PATTERN$:要让PATTERN完全匹配一整行;

^$:空行;

单词:由非特殊字符组成的连续字符(字符串)都称为单词;

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

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

\<PATTERN\>:单词锚定;

分组与引用:

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

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

后向引用:引用前面的括号中的模式所匹配到的字符串;

常用选项之二:

-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;

egrep:

支持使用扩展正则表达式的grep命令,相当于grep -E;

扩展正则表达式的元字符:

字符匹配:

.:任意单个字符

[ ]:范围内的任意单个字符

[^ ]:范围外的任意单个字符

匹配次数:

*:任意次;

?:0次或1次;

+:1次或多次;

{b}:匹配b次;

{b,d}:至少b次,至多d次;

{0,d}:至多d次

{b,}:最少b次

位置锚定:

^:行首

$:行尾

\<, \b:词首

\>, \b:词尾

分组及引用:

(pattern):分组,括号中的模式匹配到的字符会被记录于正则表达式引擎内部的变量中;

或者:

a|b:a或者b

C|cat:表示C或cat

(C|c)at:表示Cat或cat


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

以上是关于Linux中不可或缺的“grep三人组”与正则表达式的那些事的主要内容,如果未能解决你的问题,请参考以下文章

Linux 正则表达

正则表达式与Linux通配符

linux通配符与正则表达式

Linux文本过滤搜索器grep与egrep的常用正则表达式与用法

Linux基础--grep与正则表达式

linux shell基础正则表达式与grep命令(编辑中)