码迷,mamicode.com
首页 > 系统相关 > 详细

Linux grep与正则表达式

时间:2016-07-24 14:45:33      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

grep命令

        格式:grep [-acinv] [--color=auto] ‘查找字符串‘ filename

        -a 将binary文件以text文件的

        -c 计算找到 ‘查找字符串’ 的次数

        -i 忽略大小写的不同,所以大小写视为相同

        -n 顺便输出行号

        -v 反向选择,即显示出没有 ‘查找字符串’ 内容的那一行

       --color=auto 关键部分加上颜色显示

技术分享

 

基础正则

        ^:行首

        $:行尾

查找以0为行首:

 技术分享

查找以3为行尾:

技术分享

       . 代表一定有一个任意字符的字符

技术分享

       \转义字符,将特殊字符的特殊含义去掉

技术分享

       *重复0个到无穷多个的前一个字符(一定要切记是0到无穷多个,如果你想grep带有‘3’的行,用‘3*’是无效的,应该为‘33*’,其实grep ‘3’ = grep ‘33*’)

技术分享

     [list],  [abc]则或a或b或c,[0-9]则0-9范围中任意一个,同理[a-z]或[A-Z]

技术分享

     [^list]  取不在该范围内的字符,下面例子,grep一整行皆为非小写字母字符的行。*为0到无限多个的意思,如果有了扩展正则表达式,用+可以表达1到1个以上。

技术分享

     \{n,m\}  \{n,\}  \{\,m}

技术分享

 

扩展正则表达式

一定要注意:扩展正则表达式要写为egrep

        + 与之前*相对应是一个或以上前一个字符

        egrep ‘^[^a-z]+$‘ = grep ‘^[^a-z][^a-z]*$‘ 

技术分享

        ? 0个或一个前一个字符

        | 或

       ()一组字符

       ()+ 多个重复组

技术分享

 

标识字符集,例如可以用[:digit:]代替[0-9] 实例:egrep -n ‘^(12|2[[:digit:]][[:digit:]]|(29|30|31|32)[[:digit:]][[:digit:]])$‘ file*

(查找n,n=12或200<=n<=299或2900<=n<=3299)

[:alnum:] 字母和数字
[:alpha:] \a 字母
[:lower:] \l 小写字母
[:upper:] \u 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] \s 所有空格符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] \d 十进制数字
[:xdigit:] \x 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] \p 可打印字符
[:punct:] 标点符号 

最后,grep可以抓取多个文件中的字符,grep -n ‘正则表达式’ file1 file2

技术分享

 

Linux grep与正则表达式

标签:

原文地址:http://www.cnblogs.com/rixiang/p/5700706.html

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