美文网首页
grep 入门用法总结

grep 入门用法总结

作者: jyjz2008 | 来源:发表于2020-02-03 11:04 被阅读0次

    参考资料

    1. Grep - An introduction to grep and egrep. How to search for strings inside of files.

    2. 15 Practical Grep Command Examples In Linux / UNIX

    3. 在命令行输入 man grep 后看到的内容

    正文

    参考资料2 中举了不少具体的例子,我结合自己的理解也写了几个小例子,列举如下。

    本文要用到的文件为 rank.txt,其完整内容如下(其内容是 https://en.wikipedia.org/wiki/Template:Current_ITTF_Men%27s_World_Ranking
    页面提供的乒乓球男单排名)

    ITTF Men's World Ranking, as of October 2019[1]
    #   Player  Points  Move†
    1    Xu Xin (CHN)   15,980  Steady
    2    Fan Zhendong (CHN) 15,200  Steady
    3    Ma Long (CHN)  14,955  Steady
    4    Lin Gaoyuan (CHN)  14,885  Steady
    5    Tomokazu Harimoto (JPN)    13,465  Steady
    6    Hugo Calderano (BRA)   12,790  Steady
    7    Timo Boll (GER)    12,445  Steady
    8    Liang Jingkun (CHN)    12,190  Steady
    9    Mattias Falck (SWE)    12,140  Steady
    10   Lin Yun-ju (TPE)   11,055  Steady
    11   Koki Niwa (JPN)    10,840  Steady
    12   Dimitrij Ovtcharov (GER)   10,763  Steady
    13   Jun Mizutani (JPN) 10,195  Steady
    14   Jang Woo-jin (KOR) 10,070  Steady
    15   Patrick Franziska (GER)    9,735   Steady
    16   Wong Chun Ting (HKG)   9,690   Steady
    17   Lee Sang-su (KOR)  9,615   Steady
    18   Liam Pitchford (ENG)   9,500   Steady
    19   Quadri Aruna (NGR) 8,965   Steady
    20   Simon Gauzy (FRA)  8,500   Steady
    

    下面举几个具体的例子

    1. 查看马龙的信息
    # 方法1
    # 在 rank.txt 中查找与 'Ma Long' 匹配的行
    grep 'Ma Long' rank.txt
    
    # 方法2
    # 在 rank.txt 中查找与 'ma long' 匹配的行(不区分大小写)
    grep -i 'ma long' rank.txt
    

    效果如下图


    image.png

    在上图中我们可以看到马龙的排名是第三,于是就想顺便看看马龙前面两名是谁

    1. 查看马龙所在的行(称为L0)以及L0前面两行
    # -B 选项中的 B 可以理解成 before context(可以参考 man grep)
    grep -B 2 'Ma Long' rank.txt
    

    效果如下图


    image.png
    1. 查看马龙所在的行(称为L0)以及L0前后各两行
    # -C 选项中的 C 可以理解成 context(可以参考 man grep)
    grep -C2 'Ma Long' rank.txt
    

    效果如下图


    image.png
    1. 查看马龙所在的行(称为L0)以及L0后两行
    # -A 选项中的 A 可以理解成 after context(可以参考 man grep)
    grep -A 2 'Ma Long' rank.txt
    

    效果如下图


    image.png
    1. 查看日韩两国的选手信息
    # -E 选项中的 E 可以理解为 extended regexp(扩展正则表达式),关于扩展正则表达式的介绍可以 参考https://www.grymoire.com/Unix/Regular.html 一文
    
    grep -E 'KOR|JPN' rank.txt
    

    效果如下图


    image.png
    1. 查看剔除中国大陆选手后的所有选手的信息
    # -v 选项中的 v 可以理解为 invert match(反向匹配,也就是说会将不匹配的行保留)
    grep -v 'CHN' rank.txt
    

    效果如下图


    image.png

    总结

    本文简单展示了 grep 命令中 -A -B -C -E -i -v 选项的用法,详细的讲解可以参考本文开头列举的参考资料

    相关文章

      网友评论

          本文标题:grep 入门用法总结

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