您的位置:首页 > 运维架构 > Linux

Linux下grep、egrep及相应的正则表达式和用法

2016-03-08 17:02 796 查看
一、grep、egrep及fgrep
1、简介:
grep是一种强大的搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
2、命令
(1)grep命令:
支持使用基本正则表达式;

作用:文本搜索工具,根据用户指定的“pattern(过滤条件)”对目标文本逐行进行匹配检查;打印出符合条件的行;
命令格式:
grep [OPTIONS] PATTERN [FILE...]
常用选项:
①--color=auto:对匹配到的文本着色后高亮显示;




②-i:忽略字符大小写;




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




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




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

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



注:结合$?使用,获取上条命令的执行状态;

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

命令格式: egrep [OPTIONS] PATTERN [FILE...]
(3)fgrep命令:
不支持使用正则表达式;

命令格式: grep [OPTIONS] PATTERN [FILE...]

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

1、基本正则表达式
基本正则表达式元字符:
字符匹配:
. : 匹配任意单个字符;
[]: 匹配范围内的任意单个字符;
[^]: 匹配范围外的任意单个字符;
示例测试:



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

*:匹配前面的字符任意次(0,1或多次)
.* : 任意长度的任意字符;
\+:匹配前面的字符至少一次;
\?:匹配前面的0次或1次,即前面的字符可有可无;
\{m\} : 其前面的字符出现m次,m为非负整数;
\{m,n\} : 其前面的字符出现m次,m为非负整数;[m,n]

示例测试:




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

^ : 行首锚定;用于模式的最左侧,^PATTERN
$ : 行尾锚定;用于模式的最右侧,PATTERN$
^PATTERN$ : 要让PATTERN完全匹配一整行;
^$ : 空行;
^[[:apace:]]*$:
单词:由非特殊字符组成的连续字符(字符串)都被称为单词;
\<或\b:词首锚定,用于单词模式的左侧,格式为、\<PATTERN,\bPATTERN
\>或\b:词尾锚定,用于单词模式的右侧,格式为PATTERN\>,PATTERN\b

示例测试:





2、扩展正则表达式
扩展正则表达式的元字符:
字符匹配:
.:任意单个字符;
[]:范围内的任意单个字符;
[^]:范围外的任意单个字符;

示例测试:





匹配次数:
*:任意次;
?:0次或1次;
+:1次或多次;
{m}:匹配多次;
{m,n}:至少m次,至多n次;
{0,n}
{m,}

示例测试:








位置锚定:
^:行首
$:行尾
\<, \b:词首
\>, \b:词尾

示例测试:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  grep egrep fgrep 正则表