grep: (global search regular expression(RE) and print out the line)
是一种文本搜索工具,可根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行。 有则显示, 无则不显示。
1 格式:grep [options] “pattern” file...
1)pattern为字符串参数或调用变量时最好将其用双引号括起来;
2) pattern为模式匹配时应用单引号括起来。
2 常用参数
-v: 取反,显示不能被模式所匹配到的行;
-i: 不区分大小写;
-E: 支持扩展正则表达式,相当于egrep;
-A:参数后跟数字#,显示被匹配到的行和后面#行;
-B: 参数后跟数字#,显示被匹配到的行和前面#行;
-C: 参数后面跟数字#,显示被匹配到的行和前后各#行。
例 -v 找出默认shell为非bash的用户信息。
-i 找出用户名为“myqq”的用户信息 用户名不区分大小写。
-E 显示ifconfig命令结果的1-255间的整数。
egrep也是文本一种文本搜索工具, 相当与 grep -E。
grep和egrep命令参数不多,复杂在正则表达式。
基本正则表达式 grep
字符匹配
.:匹配单个字符;
[]: 匹配指定范围内任意单个字符;
[0-9],[[:digit:]] 匹配一个数字;
[a-z],[[:lower:]]匹配一个小写字母;
[A-Z].[[:upper:]]匹配一个大写字母;
[[:alpha:]]匹配一个字母(大小写);
[[:alnum:]]匹配一个数字或一个字母;
[[:space:]]匹配空白字符;
[[:punct:]]匹配标点符号;
[^]:指定范围外的任意当字符。
次数匹配 匹配对象为前面的字符;
* : 匹配前面字符任意次;
\? : 0次或一次;
\{0,n\}:至多n次 ;
\{n\} : n次;
\{m,n\} :m到n次;
\{n,\}: 至少n次。
位置锚定
^:锚定行首;
$:锚定行尾;
\<或\b:锚定词首;
\>或\b锚定词尾;
分组 \(\)
如 :\(ab\)*x 匹配x前面任意个ab组合 :x、abx、ababx……;
引用 \1 引用前面第一个左括号到与之对应的右括号中所匹配到的内容;
如: \(a.b\)x\1 :aabxaab、a1bxa1b。
扩展正则表达式 egrep grep -E
字符匹配和位置锚定与基本正则表达式相同;
次数匹配
*:匹配其前面的字符任意次;
? : 匹配其前面的字符0或1次;
+: 匹配其前面的字符至少1次
{m}: 匹配其前面的字符m次;
{m,n}: 至少m次,至多n次 作用与基本表达式中\{m,n\}相同;
{m,}: 至少m次;
{0,n}:至多n次。
分组()和|
如 l(ik|ov)er 匹配liker或lover。