标签:linux运维
grep以及正则表达式
正则表达式是基本的文本处理常识,理解和掌握好grep以及正则表达式对进行文本处理尤为重要
Grep
根据模式(文本字符和正则表达式的元字符组合而成匹配条件)搜索文本,并将符合模式的文本行显示出来。
1.1grep家族:
grep:基本正则表达式使用的命令
egrep:扩展正则表达式使用的命令
fgrep(fast grep):不支持正则表达式,在没有正则表达式的字符串中的使用效率非常高,cup资源消耗少
1.2grep命令格式
grep [options] PATTERN [FILE...]
1.2.1option
-i忽略大小写
--color:对匹配出来的字符加颜色
-v: 显示没有被模式匹配到的行
-o:只显示被模式匹配到的字符串
-E: 使用扩展正则表达式时候使用,grep –E=egrep
-A #: 显示后面的行
-B #:显示前面的行
-C #:显示前后的行
比如:显示、/proc/cpuinfo下面的内容
-A:
-B:
-C:
2.正则表达式:REGular EXPression, REGEXP
BasicREGEXP:基本
ExtendedREGEXP:扩展
2.1基本正则表达式
2.1.1字符匹配
.: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集合:[:digit:], [:lower:], [:upper:], [:punct:],[:space:], [:alpha:], [:alnum:]
a.b
[]:
[^]:
2.1.2匹配次数(贪婪模式):
*: 匹配其前面的字符任意次
.*: 任意长度的任意字符(任何以a开头和以b结尾的字符)
\?: 匹配其前面的字符1次或0次
\{m,n\}:匹配其前面的字符至少m次,至多n次,当最多次数不限制时n可以省略,m的最小值为0而且不可以省略。
\{1,\}:至少一次
\{0,3\}:至多3次
2.1.3位置锚定:
^: 锚定行首,此字符后面的任意内容必须出现在行首
$: 锚定行尾,此字符前面的任意内容必须出现在行尾
^$: 空白行
表示没有空白行
\<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现
精确匹配某个单词
分组:
\(\)
\(ab\)*
后向引用
\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容
\2: 引用第二个左括号以及与之对应的右括号所包括的所有内容
\3: 引用第三个左括号以及与之对应的右括号所包括的所有内容
2.2拓展正则表达式
2.2.1字符匹配:(和基本正则表达式一样)
.
[]
[^]
2.2.2次数匹配:
*: (和基本正则表达式一样)
?:(和基本正则表达式少了\)
+: 匹配其前面的字符至少1次
下图至少匹配一个空白字符
{m,n}(和基本正则表达式比较少了\)
2.2.3位置锚定:
^
$
\<
\>
(和基本正则表达式一样)
分组:
():分组
\1, \2, \3, ...\n
或者:
|: or
C|cat: Cat或cat? C或cat(正确)
标签:linux运维
原文地址:http://langmei.blog.51cto.com/11016382/1726978