美文网首页
分享linux下grep的一些高级参数(面儿得够)

分享linux下grep的一些高级参数(面儿得够)

作者: 蒿子杆 | 来源:发表于2017-11-22 17:52 被阅读0次

    grep是一个很常见也很常用的命令,它最重要的功能就是进行字符串数据的对比,然后将符合用户需求的字符串打印出来。

    这就是grep的作用,只要是看这篇文章的多少都知道一点,那我抄鸟哥的这句话我就当你懂了。

    既然这样那我就再抄一句

    需要说明的是grep在数据中查找一个字符串时,是以整行为单位来进行数据的选取的!也就是说,假如一个文件内有10行,其中有两行具有你所查找的字符串,则将那两行显示在屏幕上,其他的就丢弃了。

    举个栗子

    哦对了,附上原始文件


    下面开始介绍grep其他的一些参数,毕竟是给自己做笔记,我要写清楚点(呵呵)

    --color=auto 将找到的关键字显色

    注:如果觉得每次都加--color=auto很麻烦,可以用alias处理一下(alias的功能是设置命令的别名,以简写命令来提高操作效率)。可以在 ~/.bashrc 内加上这行:alias grep='grep --color=auto',再以 source ~/.bashrc 来立即生效即可


    -n 显示行号


    -A[n] 为after的意思,除了列出匹配行外,后续的n行也列出来


    -B[n] 为befer的意思,除了列出匹配行外,前面的n行也列出来


    -v 匹配不包含特定字符的行


    [] 查找集合字符,跟正则表达式用法相同

    如[12]表示包含1或者2,1[23]就表示12或者13

    当然也可以[1-3]


    [^] 在[]中使用 和-v意思相同,表示不匹配什么


    四不四叼叼哒

    但是!

    以上匹配都是在行进行查找,只要行中匹配就会展示出来,假如我要匹配行头出现过的,怎么办呢?下面介绍一些制表符的用法【微笑的表情】

    ^ 表示匹配行开头 注意意义不同于[]中的^

    匹配MSG开头的数据

    同样的,有行首就有行尾

    $ 表示匹配行尾

    匹配ERROR结尾的数据

    下面介绍俩更牛逼的

    . 表示任意字符

    啥?没看清?那不是有个. 吗?就是点儿.........

    注意,一个点儿表示一个任意字符

    牛逼不?

    * 重复字符

    以上文本数据中,有LH001这样的数据,我们匹配这行时,可以直接匹配,也可以用上面的任意字符匹配,但假设我们的目标数据是LH000000001时,或者0的位数不确定时,以上的方式都不能帮助我们准确的匹配到数据,这时候 * 就派上用场了,我们可以用LH0*1来匹配,任意个0

    举个栗子

    0有点少,大家迁就下

    好了,接下来有请我们最后一个命令

    {} 字符范围

    解释一下使用场景,假如我们要匹配2~5个0的连续字符,就是说中间有两个0也行,三个0也行,5个0也行,这个时候就要用到 {} 了

    为了便于大家理解,我换了一个匹配文本如下:

    嗯,这么简单就够我们用了,然后我们用 {} 匹配ER到1中间有2~5个0的数据

    哦对了,因为{}在shell中是有特殊意义的,所有我们需要用到转译字符让他失去意义才行

    栗子来了

    那么

    笔记做完了,哈哈哈

    如果你不小心看到了这里,点个赞吧

    不点我自己点

    相关文章

      网友评论

          本文标题:分享linux下grep的一些高级参数(面儿得够)

          本文链接:https://www.haomeiwen.com/subject/bjtovxtx.html