美文网首页程序员大数据学习
大数据学习之Linux——05grep命令用法

大数据学习之Linux——05grep命令用法

作者: Jiang锋时刻 | 来源:发表于2020-05-30 01:58 被阅读0次

    欢迎关注我的CSDN: https://blog.csdn.net/bingque6535

    一. 常用选项

    1. -E :开启扩展(Extend)的正则表达式。

    2. -i :忽略大小写(ignore case)。

      grep -i "AB" test02.txt
      
      在这里插入图片描述
    3. -v :取反(invert),打印没有匹配的行

      grep "a" test02.txt -n -v
      
      在这里插入图片描述
    4. -n :显示匹配的行号

      grep "a" test02.txt -n
      
      在这里插入图片描述
    5. -w :被匹配的文本只能是单词,而不能是单词中的某一部分

      grep -w "bc" -n test02.txt
      
      在这里插入图片描述
    6. -c :显示有多少行被匹配到了

    7. -cv :显示有多少行没有被匹配到

      grep "bc" -n -c test02.txt
      grep "bc" -n -cv test02.txt
      
      在这里插入图片描述
    8. -o :只显示被模式匹配到的字符串。

      grep "bc" -n -o test02.txt
      
      在这里插入图片描述
    9. --color :将匹配到的内容以颜色高亮显示。

      grep "a" test02.txt -n --color=auto
      
      在这里插入图片描述
    10. -A n:显示匹配到的字符串所在的行及其后n行(after)

      grep "bc" -n test02.txt -w -A 3
      
      在这里插入图片描述
    11. -B n:显示匹配到的字符串所在的行及其前n行(before)

      grep "bc" -n test02.txt -w -B 3
      
      在这里插入图片描述
    12. -C n:显示匹配到的字符串所在的行及其前后各n行(context)

      grep "bc" -n test02.txt -w -C 3
      
      在这里插入图片描述

    二. 基本正则表达式

    1. 匹配字符

    1. . :任意一个字符
    2. [abc] :匹配abc中任意一个字符
      grep "[a-z]" test02.txt
      
    3. [a-zA-Z]:匹配任意一个字母,
      grep "[a-zA-Z]" test02.txt
      
    4. [^123]:匹配除123以外的任意一个字符(数字+字母)
      grep "[^ab]" test02.txt
      
    5. [A-Z]:等价于[[:upper:]]
      在这里插入图片描述
    6. [a-z]:等价于[[:lower:]]
    7. [a-zA-Z]: 等价于[[:alpha:]]
    8. [0-9]: 等价于[[:digit:]]
    9. [a-zA-Z0-9]:等价于[[:alnum:]]
    10. tab,space等空白字符: [[:space:]]
      在这里插入图片描述
    11. 标点符号: [[:punct:]]

    2. 匹配次数

    1. \{m, n\}: 匹配前面出现的字符m-n次

      grep "[a-z]\{4,\}" test02.txt
      
      在这里插入图片描述
    2. \?: 匹配前面出现的字符0-1次, 相当于 \{0, 1\}

    3. * :匹配其前面出现的内容任意次,等价于\{0,\},所以 ".*" 表述任意字符任意次,即无论什么内容全部匹配。

    3. 位置锚定:

    1. ^ :锚定行首

      grep "^[a-z]" test02.txt    字母开头
      
      在这里插入图片描述
    2. $ :锚定行尾。

      技巧:"^$"用于匹配空白行。

      grep "[0-9]\$" test02.txt    数字结尾
      
      在这里插入图片描述
    3. \b\<:锚定单词的词首。

      如"\blike"不会匹配alike,但是会匹配liker

    4. \b\>:锚定单词的词尾。

      如"\blike\b"不会匹配alike和liker,只会匹配like

    5. \B :与\b作用相反。

    4. ​分组及引用

    1. \(str\) :将str作为一个整体方便后面引用
    2. \n :引用第n个左括号及其对应的右括号所匹配的内容。
      # 匹配以相同字母开头和结尾的行
      grep "^\([[:alpha:]]\).*\1$" test02.txt    
      

    三. 扩展的正则表达式

    1. 匹配次数

    1. * :和基本正则表达式一样
    2. ? :基本正则表达式是?,这里没有\
    3. {m,n} :相比基本正则表达式也是没有了\
    4. + :匹配其前面的字符至少一次,相当于{1,}

    其他部分和普通正则表达式没什么区别

    欢迎关注我的CSDN: https://blog.csdn.net/bingque6535

    相关文章

      网友评论

        本文标题:大数据学习之Linux——05grep命令用法

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