0%

grep命令

grep命令

三剑客

  • grep 文本过滤工具
  • sed sream editor,流编辑器,文本编辑工具
  • awk 文本报告生成器,格式化文本

正则表达式

表示控制或通配的功能的特殊字符

  • 基本正则表达式 BRE
  • 拓展正则表达式 ERE
  • Notes

grep:Global search ERgular expression and Print out the line(输出的是行)

  • 文本搜索工具,根据用户指定的“模式”,对目标文本进行匹配检查,打印匹配到的行

  • 模式:由正则表达式的元字符及文本字符所编写的过滤条件

  • 格式:

    • grep [options] Pattern [file]

    • grep [OPTIONS] -e PATTERN … [FILE…]

    • grep [OPTIONS] -f FILE … [FILE…]

    • OPTIONS:

      • –color=auto 文本着色
      • -I : Ignore 忽略大小写
      • -O:只显示匹配到的文本
      • -V :反向匹配
      • -E :支持拓展的正则表达式
      • -Q:–quiet 不输出任何信息
      • -A#,-B#,-C#,输出上下的行,A后,B前,C前后
    • 基本正则表达式的元字符

      • 字符匹配

        • . 匹配任意单个字符
        • [] 匹配指定范围内的任意单个字符
        • [^] 匹配范围外的任意单个字符
        • Notes(一个)
          • [:digit:]
          • [:lower:]
          • [:upper:]
          • [:alpha:]
          • [:alnum:] 包含数字的字母
          • [:punct:] 所有标点符号
          • [:space:] 空格
      • 匹配次数:用在指定次数的字符的后面,用于限制次数.默认贪婪模式

        • *:任意次

        • .*:任意长度的任意字符

        • ?:匹配前面的字符0次或1次

        • ?:匹配前面的字符1次或多次

        • \{m\}:匹配前面的字符m次
          
          1
          2
          3

          - ```
          \{m,n\}:至少m次,至多n次
        • ```
          {0,n}:至多n次

          1
          2
          3

          - ```shell
          \{m,\}:至少m次
      • 位置锁定

        • ^:行首锚定,用于模式的左边

        • $:行尾锚定,写在模式右边

        • ^pattern$:pattern开口,pattern结尾

          • ^$:不包含任意字符
          • ^[[:space:]]*$:可以有空格的行
        • 单词锚定,非特殊字符组成的连续字符,包括数字,都称为单词

          • \<或\b词首锚定,用于单词的模式的左侧
            
            1
            2
            3

            - ```
            \>或\b词尾锚定,用于单词的右侧
          • ```
            <pattern>精确匹配单词

            1
            2
            3
            4
            5
            6
            7



            - 分组以及引用

            - 分组符号

            ()分组符号(括号)

            1
            2
            3
            4
            5
            6
            7
            8
            9
            10

            - 引用,分组括号中的模式匹配到的内容会被正则表达式自动记录下内部变量中

            - \1,从左侧起,第一个括号匹配到的字符
            - \2
            - \3
            - 等等

            - ```
            grep "\(l..e\).*\1" lovers.ext 这样就可以保证同一行中前后出现的一样。