linux操作命令:grep命令

来源:互联网 发布:网络购彩恢复时间 编辑:程序博客网 时间:2024/05/16 03:17

    linux中有很多功能强大的文本处理小工具比如awk,grep,tr等,这也是linux下一大特色和优势,mysys下也有对应的一些小exe程序,但是有些功能有可能会被阉割一些,还是linux下原生的比较好~有点偏题~

    今天我们总结下linux下grep命令的使用:

    1.grep介绍

    gerp是“Global Regular Expression Print”的缩写,处理文本功能较为强大,主要因为其支持正则表达式的匹配。其运行基本原理是以行为单位,进行指定模式(pattern)的匹配(不匹配,其实也是一种匹配)。

    最简单的例子,test.txt中有两行:hello world!

                                    hello tomorrow!

    使用命令: grep tomorrow test.txt,其运行结果为:hello tomorrow!怎么样,是不是很简单,这个最简单的功能已经可以满足大多数应用,当然了,grep本身要比这个功能强大许多。

    2.grep详解

    Usage: grep [OPTION] ... PATTERN [FILE]

    其中pattern是一个模式,一般可以用正则表达式表达,简单介绍下正则表达式:

     2.1 正则表达式语法

     .匹配一个任意字符

     *匹配任意多个字符,如a*表示a后任意多个a,可以为0个(注意这和bash下的*通配符有所不同)

     \{\}中可以指定多少个前导字符的出现,如a\{2\}表示出现aa,a\{2,5\}表示出现aa或者aaa或者aaaa或者aaaaa,也就是出现2-5个a的模式,注意{和}在bash中有特殊含义,必须加\去除转义才能使用,也就是不要丢掉\

     ^表示行开始

     $表示行结尾

     \<表示从匹配的行开始

     \>表示到匹配的行结束

     [] 表示元组,如[abcd]表示a,b,c,d中的任意一个;[a-z]表示a-z中任意一个,也即小写字母表;[^]表示排除,如[^a]表示非a字符的集合

     \转义字符前导,能将特殊字符转为普通字符


     除了上面讲到的正则表达式外,grep还可以使用扩展正则表达式,可以使用grep -E 或者egrep调用,扩展正则表达式的主要增加规则如下:

     扩展情况下:+表示一个或者多个前导字符,如a+表示至少一个a

                 ?表示0个或者1个前导字符,如a?表示0个或者1个a

                 |表示或关系,如dog|dag表示dog或者dag中的一个

                ()合并单元组,如'g(oo|o)d'表示good或者god,括号表示oo和o二者具有相同地位

    2.2 主要参数讲解:

    -c 只输出匹配行的计数,不显示匹配结果
    -i 不区分大小写(用于单字符)
    -n 显示匹配的行号
    -v 不显示不包含匹配文本的所以有行
    -s 不显示错误信息
    -E 使用扩展正则表达式

    -G 使用标准正则表达式(预设)

    -e pattern 避免误认pattern,如以-为开头的模式就可以加上-e区分

    -f 从文件中获得模式,可以将多种模式写成一个文件,每行一个

    -b 列出样式之前的内文总共有多少byte

    -A或者-B或者-C + NUM,一个系列,表示除输出匹配行外,还输出匹配前(-B)后(-A)(-C包括前后) NUM行的结果,其中 -C默认值为2

    -d ACTION, --directories=ACTION,若输入的档案是一个资料夹,使用ACTION去处理这个资料夹。预设ACTION是read(读取),也就是说此资料夹会被视为一般的档案;若ACTION是skip(略过),资料夹会被grep略过;若ACTION是recurse(递归),grep会去读取资料夹下所有的档案

    -H, --with-filename 如果匹配上,显示所在文件名,有路径会显示路径

    -q, --quiet, --silent 静默模式,不显示所有一般匹配结果

    -R -r, --recursive 递归,与-d recurse相同,递归处理文件夹下结果

    -w,--word-regexp 和 -x,--line-regexp 分别表示以字或者行看待模式,如-w ‘hello’ 表示按hello字搜索,而-x 'hello'表示搜索内容为‘hello’的行(完全匹配)


     以上就是grep的主要内容了,是不是一个很强大的工具呢?

0 0
原创粉丝点击