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

grep的使用

时间:2015-03-02 11:22:27      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:bash

grep
    格式:grep [options] [regular expression] [filename ...]

    -v 选项查找不匹配给出模式的记录
    -i 选项忽略大小写,默认是大小写敏感的
    -n 打印所在文件和行号
        例 grep -n "grep" *      #在当前目录下所有文件中搜索。
    -l选项只输出匹配到的文件名
    -L选项输出没有匹配到的文件名

    高级正则表达式

    常用字符集
特殊字符
描述
\d
所有数字,相当于[0-9]
\D
数字以外,相当于[^0-9]
\w
所有大小写字母和数字及下划线,相当于[a-zA-Z0-9_]
\W
除了字母、数字、下划线以外的所有其他字符,相当于[^a-zA-Z0-9_]
\f
Form feed
\n
Line feed
\r
Carriage return
\t
TAB
\v
Veritical TAB
\s
任何空白字符,相当于[\f\n\r\t\v]
\S
任何非空白字符,相当于[^\f\n\r\t\v]


    +表示前导子符至少重复一次,*表示0次或多次,?表示一次或0次

    确切指定要重复的个数可以在花括号{}中指定。
    例:匹配RGB
        grep -E "[[:xdigit:]]{6}" filename
    
    完整POSIX字符类列表:
[:alnum:]
任何字母、数字,相当于表达式[a-zA-Z0-9]
[:alpha:]
所有的字母字符,相当于表达式[a-zA-Z]
[:blank:]
空格和TAB,相当于表达式[\t]
[:cntrl:]
ASCII控制字符(ASCII字符0到31及127)
[:digit:]
所有的数字字符,相当于表达式[0-9]
[:graph:]
除了空格以外的所有可打印字符
[:lower:]
所有的小写字母,相当于表达式[a-z]
[:print:]
所有可打印字符,相当于[:graph:]加空格
[:punct:]
除了[:alnum:]和[:cntrl:]以外的所有字符
[:space:]
所有的空白字符,相当于[\f\v\n\r\t]
[:upper:]
所有大写字母,相当于[A-Z]
[:xdigit:]
所有的十六进制,相当于[a-fA-F0-9]
所有支持POSIX标准的正则表达式工具都可以使用它们,上面的中括号并不是定义字符集的,在正则表达式中还要再加定义字符集的中括号。

匹配字符的个数不明确而是一个范围时,可以用{min,max}形式指定范围。
例:
    匹配日期:
    grep -E "[0-9]{1,2}[-/][0-9]{1,2}[/-][0-9]{2,4}" filename

    不指定最大值可使用:{min,}


匹配一个单词
    grep -E "\<bug\>" filename

可以用圆括号括起子表达式然后再使用花括号表示重复
例:
    匹配ip
    grep -E "([0-9]{1,3}\.){3}([0-9]{1,3})" filename

匹配合法的ip,需要更复杂的表达式,表达式是不惧怕复杂的,写呗
    grep -E ((([0-9]{1,2})|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]{1,2})|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))" filename

竖线 | 这个符号表示或,但要注意优先级

\b可以匹配到字符串中所允许的字符和字符串中不合法字符之间的位置,也就是\w所代表的字母、数字、下划线、和所有其他字符之间的一个位置。

在文本文件中搜索连续重复的单词:
    grep -E "(\b[[:alnum:]]+\b)+\1" filename

\1向前引用第一个子表达式,\2引用第二个,以此类推。
只有定义了子表达式后才可以这样引用。

加号在括号[ ]外时是一个特殊字符,如果在正则表达式中匹配加号,需要用反斜杠引用
+在括号[ ]中表示含+的字符集

当点和加号之类的特殊字符在中括号[ ]中时失去特殊意义,但使用反斜杠引用效果也是一样的。

本文出自 “重剑无锋” 博客,请务必保留此出处http://qianyang.blog.51cto.com/7130735/1616403

grep的使用

标签:bash

原文地址:http://qianyang.blog.51cto.com/7130735/1616403

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