zoukankan      html  css  js  c++  java
  • shell之文本过滤(grep)

     

    shell之文本过滤(grep)

    分类: linux shell脚本学习

    grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。

    g r e p一般格式为:

    grep [选项]基本正则表达式[文件]

    这里基本正则表达式可为字符串。如果是字符串的时候请加上“”号,否则容易出错。

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

    grep和正则表达式
    使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用正则表达式时最好用单引号括起来,这样可以防止 g r e p中使用的专有模式与一些 s he l l 命令的特殊方式相混淆。

    要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

    $ ls -l | grep '^a' 
    通过管道过滤ls -l输出的内容,只显示以a开头的行。

    $ grep 'test' d* 
    显示所有以d开头的文件中包含test的行。

    $ grep 'test' aa bb cc 
    显示在aa,bb,cc文件中匹配test的行。

    $ grep '[a-z]/{5/}' aa 
    显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

    $ grep 'w/(es/)t.*/1' aa 
    如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(/1),找到就显示该行。如果用egrep或grep -E,就不用"/"号进行转义,直接写成'w(es)t.*/1'就可以了。

    grep正则表达式元字符集(基本集)

    锚定行的开始 如:'^grep'匹配所有以grep开头的行。


    锚定行的结束 如:'grep$'匹配所有以grep结尾的行。


    匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。


    匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

    [] 
    匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

    [^] 
    匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

    /(../) 
    标记匹配字符,如'/(love/)',love被标记为1。

    /< 
    锚定单词的开始,如:'/
    /> 
    锚定单词的结束,如'grep/>'匹配包含以grep结尾的单词的行。

    x/{m/} 
    重复字符x,m次,如:'0/{5/}'匹配包含5个o的行。

    x/{m,/} 
    重复字符x,至少m次,如:'o/{5,/}'匹配至少有5个o的行。

    x/{m,n/} 
    重复字符x,至少m次,不多于n次,如:'o/{5,10/}'匹配5--10个o的行。

    /w 
    匹配文字和数字字符,也就是[A-Za-z0-9],如:'G/w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

    /W 
    /w的反置形式,匹配一个或多个非单词字符,如点号句号等。

    /b 
    单词锁定符,如: '/bgrepb/'只匹配grep。

  • 相关阅读:
    深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-softmax多分类-06
    深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-逻辑回归与交叉熵概述-05
    深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-多层感知器(神经网络)与激活函数概述-04
    深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-梯度下降算法概述-03
    深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-线性回归tf.keras概述-02
    深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-Tensorflow2.2-cpu/gpu环境安装-01
    深度学习-线性回归基础-02
    艾宾浩斯复习
    maven中设置jdk默认编译版本为1.8
    maven 编译命令
  • 原文地址:https://www.cnblogs.com/L-H-R-X-hehe/p/3816191.html
Copyright © 2011-2022 走看看