码迷,mamicode.com
首页 > 其他好文 > 详细

grep、egrep

时间:2014-05-24 16:58:02      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:特殊符号   cccccc   表达式   字符串   color   

正则表达式是基于样式匹配的进行文本处理,透过一些特殊符号的辅助,可以达到搜寻、删除、取代某特定的字符串。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。

我们利用这些返回值就可进行一些自动化的文本处理工作。

正则表达式分为基本正则表达式和扩展正则表达式;

grep: 默认支持基本正则表达式。

egrep: 扩展正则表达式,是grep的扩展。

元字符:不表示字符本身的意义,而用于额外功能性的描述,只有一部分文本处理工具支持它;

基本正则表达式:

\:转义符,可以将下面的特殊字符转义成普通字符。a\.b 匹配a.b、ca.b,不能匹配acb; a\*b匹配a*b、a*bb
从文件file包含有这个a*b.ab的那一行 
grep "a\*b\.ab" file
^:行起始标记。^te匹配所有以te开头的行
从文件file匹配以the开头的那一行 
grep "^the" file
$:行尾标记,锚定行的结束 如:end$匹配所有以end结尾的行
匹配空白行
grep "^$" file
[]:匹配包含在 [字符] 之中的任意一个字符。te[abc]匹配tea、teb
   
匹配以te开头后跟的字符是a、b、c的行
grep "^te[abc]" file
[
^]:匹配不包含在 [字符] 之中的任意一个字符。te[^abc]匹配ted、te1,不匹配tea、teb
匹配不是以s 、S开头的行
grep "^[^sS]" file
[
-]:匹配[ ]中指定范围的内的任意一个字符。 [a-z]:所有小写字母 [0-9]:所以数字 [a-zA-Z]:所以的大小写字母
匹配以小写字母开头的行
grep "^[a-z]" file
\
?:匹配之前项的1次或0次。a\?b匹配b、ab、aab、acb
grep "a\?b" file
*:匹配之前项任意次。a*b匹配b、ab、aab、acb、aaaaaab
grep "a*b" file
\( \):创建一个用于匹配的子串。 \(ab\): ab, aab, abb, abab a任意一个字符b任意字符a任意一个字符b(前后两个任意一个字符要相等,后面的“a任意一个字符b”是完全参照第一“a任意一个字符b”): \(a.b\).
*\1
grep "\(a.b\).*\1" file
\{n \}:匹配之前项n次。[
0-9]\{2\}匹配任意两位数
grep "[0-9]\{2\}" file
\{n ,\}:匹配之前项至少需要n次。[
0-9]\{2,\}匹配任意两位数或任意更多数字
grep "[0-9]\{2,\}" file
\{n ,m\}:匹配之前项必须匹配最小n次和最大m次。[
0-9]\{23\}匹配任意两位数或任意三位数
grep "[0-9]\{2,3\}" file
\
<:锚定单词的开始,如:\<te匹配包含以te开头的单词的行。
grep "\<te" file
\
>:锚定单词的结束,如te\>匹配包含以te结尾的单词的行。
grep "te\>" file
[:alnum:] 所有数字和字母。相当于[a-zA-Z0-9]
grep "a[[:alnum:]]b" file
[:alpha:] 所有字母字符,相当于[a-zA-Z]
grep "a[[:alpha:]]b" file
[blank:] 所有空格与制表符 [:digit:] 所有数字,相当于[0-9] [:lower:] 小写字母相当于[a-zA-Z] [:upper:] 大写字母相当于[a-zA-Z] [:punct:] 标点符号 [:space:] 空白字符
在/etc/passwd中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
grep "^[[:space:]]*#[[:space:]]\{1,\}[^[:space:]]"  /etc/passwd
扩展正则表达式(除了上面的特殊字符还支持下面几个字符):
+: 匹配其前面的字符至少1次;
a|b: 二选一;




grep用法:
grep [options] pattern file1 file2 ….
grep选项有:
-v: 反向选取,只显示不符合模式的行;
-o: 只显示被模式匹配到的字串,而不是整个行;
 -i: 不区分字符大小写; 
-A #:显示匹配到的行时,顺带显示其后面的#个行;
    -B #:前面的#行; 
-C #:前后的#行; 
-E: 使用扩展的正则表达式 
grep -E = egrep
匹配 1.0.0.1 ~ 223.255.255.254
bubuko.com,布布扣

如果需要在多级目录中对文本进行递归搜索,可以使用

bubuko.com,布布扣

grep、egrep,布布扣,bubuko.com

grep、egrep

标签:特殊符号   cccccc   表达式   字符串   color   

原文地址:http://xiang99.blog.51cto.com/3583449/1416414

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!