#Linux grep与正则表达式浅析
##grep
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
###grep语法
grep [options] pattern [file…]
options:
-v:对搜索内容取反
-i:搜索时忽略大小写
-n:显示搜索内容的行号
-o:只显示匹配到的内容
-q:静默模式,不输出信息(常用于脚本,使用echo $?判断,echo $?返回值位0时证明grep命令匹配已到模式字符,非零1~255匹配失败)
-e:指定多个pattern
-A#:显示匹配pattern后#行内容
-B#:显示匹配pattern前#行内容
-C#:显示匹配pattern前后各#行内容
-E:支持扩展表达式
##基本正则表达式元字符
###字符匹配
. :匹配任意单个字符
[]:匹配中括号范围内的任意单个字符
[^]:匹配中括号范围外的任意单个字符
[:alpha:]:匹配任意大小写字母
[:alnum:]:匹配字母与数字
[:lower:]:匹配任意小写字母
[:upper:]:匹配任意大写字母
[:space:]:匹配空格
[:digit:]:匹配十进制数字
[:punct:]:匹配标点符号
###次数匹配
* :匹配前字符任意次,0,1,……
.*:匹配任意长度任意字符
\?:匹配前字符0次或1次
\+:匹配前字符1次至无限次(至少1次)
\{n\}:匹配前字符n次
\{n,m\}:匹配前字符至少n次,至多m次
\{n,\}:匹配前字符至少n次,
\{,m\}:匹配前字符至多m次
###位置锚定
^ :锚定行首
$ :锚定行尾
^$ :表示空行,^[[:space:]]\+$:空白行
\<或\b:锚定词首
\>或\b:锚定词尾
注:\b:位置决定锚定词首或词尾
###分组及引用
\( \):将一个或多个字符"捆绑"成分组,后向使用变量\1引用(可按分组数引用对应变量,引用的是匹配到的字符而非匹配模式)
最后一条命令:查找/etc/passwd文件同行中出现同一单词出现两次的行
##扩展正则表达式元字符
###字符匹配
与基本正则表达式相同(使用方法与基本正则表达式相同)
###次数匹配
* :匹配前字符任意次,0,1,……(使用方法与基本正则表达式相同)
.*:匹配任意长度任意字符,(使用方法与基本正则表达式相同)
?:匹配前字符0次或1次,(使用方法与基本正则表达式相同,以此为例)
+:匹配前字符1次至无限次(至少1次),(使用方法与基本正则表达式相同,)
{n}:匹配前字符n次,(使用方法与基本正则表达式相同)
{n,m}:匹配前字符至少n次,至多m次,(使用方法与基本正则表达式相同)
{n,}:匹配前字符至少n次,(使用方法与基本正则表达式相同)
{,m}:匹配前字符至多m次,(使用方法与基本正则表达式相同)
###位置锚定
与基本正则表达式相同,(使用方法与基本正则表达式相同)
###分组引用
():扩展正则表达式分组不需要对其转义,使用和基本正则表达式相同
###其他
在基本正则表达式模式匹配时使用或(|)需要对其转义(前面加\),扩展正则表达式模式匹配时使用或(|)不需要对其转义。
配图为常用选择。
原创文章,作者:wangy,如若转载,请注明出处:http://www.178linux.com/72629