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

grep 学习笔记

时间:2015-04-27 15:27:49      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:grep grep学习 详解

grep是UNIX和LINUX中使用最广泛的命令之一
grep允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。grep支持基本正
则表达式,也支持其扩展集。

测试文件datafile,如下

技术分享


1.grep一般格式为:
grep[选项]基本正则表达式[文件]
这里基本正则表达式可为字符串。

2.在grep命令中输入字符串参数时,最好将其用双引号括起来。
一是以防被误解为shell命令
二是可以用来查找多个单词组成的字符串
在调用变量时,也应该使用双引号

3.grep常用选项
常用的grep选项有:
-c只输出匹配行的计数。
-i不区分大小写(只适用于单字符)。
-h查询多文件时不显示文件名。
-l查询多文件时只输出包含匹配字符的文件名。
-n显示匹配行及行号。
-s不显示不存在或无匹配文本的错误信息。
-v显示不包含匹配文本的所有行。

4.grep和正则表达式
使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用
正则表达式时最好用单引号括起来,这样可以防止 grep中使用的专有模式与一些 shell命令的
特殊方式相混淆。
        1、模式范围
        抽取代码为4 8 4和4 8 3
        #grep ‘48[34]‘ datafile
        2、不匹配行首
        抽出记录,使其行首不是4 8
        #grep ‘^[^48]‘ datafile
        3、设置大小写
        使用- i开关,可以屏蔽大小写或者使用 [ ]模式
        #grep ‘[Ss]ept‘ datafile
         如果在满足上述条件的情况下还需满足必须包含483.则
        #grep ‘[Ss]ept‘ datafile | grep 483
        4、匹配任意字符
        以L开头,以D结尾的所有代码
        #grep ‘K...D‘ datafile
        头两个是大写字母,中间两个任意,并以 C结尾
        #grep ‘[A-Z][A-Z]..C‘ datafile
        5、日期查询
        查询所有以 5开始以1996或1998结尾的所有记录
        #grep ‘5..199[6,8]‘ datafile
        6、范围组合
        获取第一列代码
        #grep ‘^[0-9][0-5][0-6]‘ datafile
        7、模式出现机率
        包含数字4至少重复出现两次的所有行
        #grep ‘4\{2,\}‘ datafile
        取记录使之包含数字999(三个9)
        grep ‘9\{3,\}‘ datafile
        查询重复出现次数一定的所有行,语法如下,数字 9重复出现两次
        grep ‘9\{2\}‘ datafile
        重复出现次数在一定范围内  
        匹配数字8重复出现2到6次,并以3结尾
        #grep ‘6\{2,6\}3‘ datafile
        8、使用grep匹配"与"或者"或"模式
        grep命令加- E参数,这一扩展允许使用扩展模式匹配
        获取代码为 219或216,
        #grep -E ‘219|216‘ datafile
        9、空行
        结合使用^和$可查询空行。使用- n参数显示实际行数:
        #grep ‘^$‘ datafile
        10、匹配特殊字符
        诸如$.‘"*[]^|\+?,必须在特定字符前加\
        #grep ‘\.‘ datafile
        或者
        #grep ‘\"‘ datafile
        如要查询文件名controll.conf
        #grep ‘controll\.conf‘ /PATH/TO/SOME
        11、查询格式化文件名
        在某目录中查找六个小写字符,后跟句点,接着是两个大写字符格式的文件
        #grep ‘^[a-z]\{1,6\}\.[A-Z]\{2\}‘ /PATH/TO/SOME
        12、查询IP地址
        #grep ‘[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}‘ ipfile
        13、类名
        [[:upper:]][A-Z]     [[:alnum:]][0-9a-zA-Z]
        [[:lower:]][a-z]     [[:space:]]空格或tab键
        [[:digit:]][0-9]     [[:alpha:]][a-zA-Z]
        举例
        查找以5开头,后跟至少两个大写字母。
        #grep ‘5[[:upper:]][[:upper:]]‘ datafile
5、egrep
egrep代表expression或extendedgrep,适情况而定。egrep接受所有的正则表达式,egrep
的一个显著特性是可以以一个文件作为保存的字符串,然后将之传给egrep作为参数.
        1、查看在系统中是否有帐号louise、matty或pauline,
        使用who命令并管道输出至egrep
        who | egrep (louise|matty|pauline)
        2、还可以使用^符号排除字符串。如果要查看系统上的用户,但不包括 matty和pauline
        who | egrep -v ‘^(matty|pauline)‘
        3、如果要查询一个文件列表,包括shutdown,shutdowns,reboot和reboots,使用egrep可容
        易地实现
        #egrep ‘(shutdown | reboot) (s)?‘ /PATH/TO/SOME


本文出自 “Linux is belong to you” 博客,请务必保留此出处http://jwh5566.blog.51cto.com/7394620/1639057

grep 学习笔记

标签:grep grep学习 详解

原文地址:http://jwh5566.blog.51cto.com/7394620/1639057

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