一、grep、egrep含义
grep:(global search regular expression(RE)and print out the line);文本搜索工具,根据用户指定的文本模式(PATTERN)对目标文件进行逐行搜索,并显示能够被模式匹配到的行。
egrep:相当于 grep -E ;使用扩展正则表达式来构建模式。
二、基本用法
1、格式:grep [options] ‘PATTERN‘ file, ...(可以指定多个文件)
--color=auto:可以高亮显示匹配到的内容;
2、参数
2.1:常用参数
-v:反向显示,显示不能被模式所匹配到的行;
-o:只显示被模式匹配到的字串,而非整行;
-i:不区分字符大小写。ignore-case;
-E:支持扩展正则表达式;
-A#:显示匹配到的内容及其下面#行;
-B#:显示匹配到的内容及其上面#行;
-C#:显示匹配内容及其上下各#行;
2.2:其他参数
-s或--no-messages: 不显示错误信息。
-V或--version: 显示版本信息。
-w或--word-regexp: 只显示全字符合的列。
-x或--line-regexp: 只显示全列符合的列。
-y: 此参数的效果和指定“-i”参数相同。
--help 在线帮助。
同时也可以使用man grep来查看具体的详细参数与说明。
三、正则表达式
1、含义:正则表达式(Regular Expression);正则表达式使用单个字符串来
描述、匹配一系列符合某个句法规则的字符串。
基本正则表达式和扩展正则表达式:工作于贪婪模式,尽可能长的匹配字符;
2、基本正则表达式元字符
字符匹配:
.:匹配任意单个字符;
[]:匹配指定范围内的任意单个字符;
[^]:匹配指定范围外的任意单个字符;
次数匹配:
*:匹配其前面字符的任意次;0次或多次
.*:匹配任意长度的任意字符;
\?:匹配其前面字符的0次或1次;
\{m\}:匹配m次;
\{m,n\}:匹配至少m次,至多n次;
\{m,\}:匹配至少m次;
\{0,n\}:匹配至多n次;
位置锚定:
^:锚定行首;
$:锚定行尾;
\<|\b:锚定词首;
\>|\b:锚定词尾;
^$:为空白行;
分组:
\(\):分组
\#:#为数字;对分组的字符串基于位置进行引用;
例:\1;引用前面的第一个左括号以及与之对应的右括号中
的模式所匹配的内容。
3、扩展正则表达式元字符:大部分与正则表达式的元字符是相同的,但是\转义符
是不需要添加的。
字符匹配:
.:任意单个字符;
[]:指定范围内的任意单个字符;
[^]:指定范围外的任意单个字符;
次数匹配:
*:其前面的字符任意次;
?:匹配其前面的字符0次或1次;
+:匹配其前面的字符至少1次;
{m}:匹配其前面的字符m次;
{m,n}:至少m次,至多n次;
{m,}:至少m次;
{0,n}:至多n次;
锚定:与基本正则表达式相同;
分组:
():分组;
|:或者;
四、具体的例子
显示/proc/meminfo中以大小写S开头的行;
取出默认shell为非bash的用户;
显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,
而后又有至少一个非空白字符的行;
添加用户bash和testbash、basher,而后找出当前系统上其用户名和
默认shell相同的用户;
本文出自 “Soul” 博客,请务必保留此出处http://chenpipi.blog.51cto.com/8563610/1360509
原文:http://chenpipi.blog.51cto.com/8563610/1360509