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

一. 常用选项

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

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

    grep -i "AB" test02.txt
    

    在这里插入图片描述

  3. -v :取反(invert),打印没有匹配的行

    grep "a" test02.txt -n -v
    

    大数据学习之Linux——05grep命令用法_第1张图片

  4. -n :显示匹配的行号

    grep "a" test02.txt -n
    

    在这里插入图片描述

  5. -w :被匹配的文本只能是单词,而不能是单词中的某一部分

    grep -w "bc" -n test02.txt
    

    大数据学习之Linux——05grep命令用法_第2张图片

  6. -c :显示有多少行被匹配到了

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

    grep "bc" -n -c test02.txt
    grep "bc" -n -cv test02.txt
    

    在这里插入图片描述

  8. -o :只显示被模式匹配到的字符串。

    grep "bc" -n -o test02.txt
    

    大数据学习之Linux——05grep命令用法_第3张图片

  9. –color :将匹配到的内容以颜色高亮显示。

    grep "a" test02.txt -n --color=auto
    

    在这里插入图片描述

  10. -A n:显示匹配到的字符串所在的行及其后n行(after)

    grep "bc" -n test02.txt -w -A 3
    

    大数据学习之Linux——05grep命令用法_第4张图片

  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
    

    大数据学习之Linux——05grep命令用法_第5张图片

二. 基本正则表达式

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:]]
    大数据学习之Linux——05grep命令用法_第6张图片
  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,}

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

你可能感兴趣的:(Linux)