grep
grep是linux使用最广泛的命令之一。grep允许对文本文件进行模式查找。如果找到匹配的模式,grep会打印包含模式在内的所有行,grep可分为3种模式进行讨论,grep的三种变形:
第一部分 基本正则表达式--grep
1 “ . ” 表示任意单个字符
2 ” * “ 表示紧挨其前面字符出现任意次,至少别匹配一次
可以看出b前的至少要有一个a,没有a的就匹配单个b
3. ” .* “ 表示任意字符任意内容(a和b之间任意字符都可以匹配到)
4 ^ 和$表示行首和行尾
5 ^$ 表示空白行(空行,一般可以通过吧空行过滤出来,来除去文件的空行)
6 \?这个和 * 的用途是一样的------
7. \{m,n\} 表示比配前面字符至少m次,至多n次
当m=0次时,匹配的就没有下限了,可以没有前面的呢个字符
当n=0时,匹配就没有上限,只要有都算在匹配的内容之内
8. \<\>字符集的锚定,所截取一定是完整的单词
9. 表示分组-----\(patter\)这样的可是,匹配这字符集的内容
[ ] 和[ ^ ] 表示中括号内的内容和非中括号的内容
[:space:]-----表示空白行,这个和^$有很大的区别,^$本能作为一个字符去匹配但是space可以,例如检索/etc/inittab中
[:lower:]-----表示所有小写字母
[:upper:]-----表示所有大写字母
[:digit:]-----表示所有数字
[:punct:]-----表示任意标点符号
[:alnum:]-----表示任意字母(不分大小写)
[:alpha:]------表示任意字母和数字
第二部分 扩展的正则表达式(这里就不举例子了,其实和grep十分相似)
1. + 表示匹配前一个至少一次,和*以及\?用法是一样的
2. ? 实际上就是\? 去掉了转译符
3.{n,m} 和grep的\{n,m\}是一样的
4. a|b 或匹配这个是可以多选一的
加上了()才表示单个字母的或,不然就会表示成a和baa之间的或关系了
5.\<\>和grep是相同的
6.\(\)分组匹配和grep也是相同的
第三部分 grep --option
--color=auto 表示匹配的部分加上颜色
-v 表示出了匹配内容以外的所有内容(可以用这个去除空行)
-o 表示只显示匹配的内容,多余的不部分不显示
-A+数字# 表示显示匹配的行的下面#行
-B+数字# 表示显示匹配的行的上面#行
-i 表示匹配时不分大小写
-r 表示递归搜索
grep -E == egrep
本文出自 “linux学习” 博客,请务必保留此出处http://joe51cto.blog.51cto.com/7680547/1361437
原文:http://joe51cto.blog.51cto.com/7680547/1361437