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

linux文本处理-grep

2016-03-13 13:03 501 查看
grep(globe regular expression and print out the line)是linux文本搜索工具,
man文档解释如下:grep searches the named input FILEs (or standard input if no files are named, or if a single hyphen-minus (-)is given as file name) for lines containing a match to the given PATTERN.By default, grep prints the matching lines.

grep家族

grep:支持使用基本正则表达式
egrep:支持使用扩展正则表达式,grep -E
fgrep:不支持使用正则表达式,grep -F

grep命令用法:
grep [OPTIONS] PATTERN [FILE...]
常用选项:
--color=auto:对匹配到的文本着色后高亮显示;
-i:忽略字符大小写;





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



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



-E:支持扩展的正则表达式;
-q, --quiet, --silient:静默模式,不输出任何信息;
基本正则表达式元字符:
字符匹配:
.:匹配任意单个字符;



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



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



[:digit:]匹配所有数字
[:lower:]匹配所有小写字母
[:upper:]匹配所有大写字母
[:alpha:]匹配所有字母
[:alnum:]匹配所有字母数字
[:space:]匹配空格
[:punct:]匹配标点符号

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



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




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




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



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




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




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




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



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




位置锚定

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



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




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



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



^$:空行;不能过滤带空格符或tab符的空行



^[[:space:]]*$:可过滤出带空格或tab符的空行




分组与引用:
\(PATTERN\):将此PATTERN匹配到的字符当作一个不可侵害整体进行处理;
Note:分组括号中的模式匹配到的字符会被正则表达式引擎自动记录于内部的变量中,这些变量是\1, \2, \3, ...

pat1\(pat2\)pat3\(pat4\(pat5\)pat6\)

\n:模式中第n个左括号以及与之匹配的右括号之间的模式所匹配到的字符串;(不是模式,而是模式匹配的结果)

\1:第一组括号中的pattern匹配到的字符串;

\2:第二组括号中的pattern匹配到的字符串;




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

egrep [OPTIONS] PATTERN [FILE...]

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

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

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

^:行首
$:行尾
\<, \b:词首
\>, \b:词尾
分组及引用:

(pattern):分组,括号中的模式匹配到的字符会被记录于正则表达式引擎内部的变量中;
后向引用:\1, \2, ...
或者:
a|b:a或者b
C|cat:表示C或cat
(C|c)at:表示Cat或cat

本文出自 “liberalism” 博客,请务必保留此出处http://edonkey.blog.51cto.com/887243/1750507
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: