首页 > 代码库 > grep系的相关内容

grep系的相关内容


grep系:
  grep ; egrep ; fgrep

  grep就是利用正则表达式进行全局搜索并将匹配的行显示出来;

  格式:
  grep [OPTIIONS] PATTERN [FILE...]
    PATTERNN:过滤条件,是由正则表达式以及没有特殊含义的文本字符组成的;

   常用选项:
   -i:忽略文本字符的大小写;
   -v:反向匹配,最终显示的是PATTERN所不能成功匹配的行;
   -c:计数,统计匹配PATTERN的所有行数;
   -o:关闭贪婪模式,仅显示PATTERN所能够匹配的内容;
   -q:安静模式,不输出任何匹配的结果;
   --color[=WHEN]:将匹配的内容以特殊颜色高亮显示;
         --color=auto
   -E:拓展的正则表达式;grep -E=egrop;
   -F:grep -F=fgrop
   -G:基本的正则表达式,egrop -G相当于grop;
   -P:使用pcre引擎;
   -A NUM:在显示匹配PATTERN行的同时显示其后面的num行;
   -B NUM:在显示匹配PATTERN行的同时显示其前面的num行;
   -C NUM:在显示匹配PATTERN行的同时显示其前后各num行;

   PATTERN:
     正则表达式元字符:
         基本的正则表达式元字符:
             GLOBBING——————简化的正则表达式: [] ? *

             字符匹配:
                 .:匹配任意单个字符;
                 []:匹配指定范围内的任意单个字符;
                 [^]:匹配指定范围以外的任意单个字符;
                       [:lower:]
                       [:upper:]
                       [:alpha:]
                       [:digit:]
                       [:space:]
                       [:alnum:]
                       [:punct:]
                       [:blank:]
                       [:xdigit:]:所有的十六进制数字;
                       a-z:所有的小写字母;
                       A-Z:所有的大写字母;
                       0-9:标识所有的十进制数字;

             次数匹配:该类字符之前的那个字符可以出现的次数;
                    *:其前面的字符可以出现任意次(0,1或多次)
                    \?:其前面的字符可有可无(0,1)
                    \+:其前面的字符至少出现多次(1或多次)
                    \{m\}:其前面的字符必须出现m次;
                    \{m,n\}:其前面的字符至少出现m次,至多出现n次;
                    \{,n\}:其前面的字符至少出现0次,至多出现n次;
                    \{m,\}:其前面的字符其前面的字符至少出现m次,多多益善;

        在正则表达式中,表示任意长度字符的方式:.*

            位置锚定字符:

                行锚定:
                       行首锚定:^
                       行尾锚定:$
                字锚定:
                       字首锚定:\<
                       字尾锚定:\>

                对于正则表达式引擎来说,字是由非特殊字符组成的连续字符串;

            分组与引用字符:
                \(PATTERN\):将次PATTERN所匹配到的所有字符当作一个不可分割的整体来处理;
                在正则表达式引擎中,有一系列的内置变量,这些变量会保存所有分组内的字符信息,用于后向引用,这些变量分别依次是:
                \1,\2,\3,...

                patternl\(pattern2\)pattern3\(pattern4\(pattern5\)\)
                \1:pattern2
                \2:pattern4
                \3;pattern5
                \1:第一组小括号中的pattern匹配到的字符;
                \2:第二组小括号中的pattern匹配到的字符;
                ……


    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
        默认情况下,grep命令后面只允许有一个PATTERN
        如果想要在一次grep所搜索过程中写多个PATTERN,则需要使用-e选项;每个-e选项后面只能有一个PATERN作为参数;

        将所需要的PATTERN写入到一个文件中,保证每行只有一个PATTERN:我们就可以使用-f FILE 选项来实现多PATTERN匹配;

    egrep:
        egrep [OPTION] PATTERN [FILE...]
            拓展的正则表达式元字符;
                字符匹配: .  [] [^]
                次数匹配:    *    ?    +    {m}    {m,n}    {m,}    {0,n}
                位置锚定:   ^    $    \<,\b    \>,\b
                分组和引用:     ()    \1, \2, \3,...或:|
                     其他的文本处理命令:
      wc:
          wc [OPTION]... [FILE]...
              -l:只显示行数
              -w:只显示字数
              -c:只显示字符数
    cut:remove sections from each line of files
          能够被cut命令修剪的文件,一般都是具有一定结构或格式的文本文档;/etc/passwd
          cut OPTION... [FILE]...
              -d, --delimiter=DELIM:指定在实施修剪操作时所依赖的分隔符,默认是空白字符;
              -f, --fields=LIST:根据定义的分隔符来指定字段的编号;
                  地址定界使用方法:
                  #:选择被指定的单个字段;
                  #,#:离散的多个被指定的单个字段;
                  #-#:连续的多个被指定的字段;
              --output-delimiter=STRING:指定输出分隔符;
    awk:
          awk -F "DELIMITER" ‘[/PATTERN/]{print $1,$2,...$NF}‘ FILE...
              -F "DELIMITER":指定字段分隔符,默认为空白字符;
              $1,$2,...,$NF:根据字段分隔符切割出来的文本片段都存放在相应的内部变量中;

      sort:sort lines of text files,将文本文件按行继续排序,默认排序规则是按照ASCII表中的字符顺序进行,这个排序标准可修改;
          -r, --reverse:逆序排序
          -R, --random-sort:随机排序,这种随机算法是非常简陋的,不适用于复杂环境;
          -u, --unique:重复出现的行,只保留一行;(连续且完全相同的行叫重复),祛重;
          -n, --numeric-sort:以数字的数值大小进行排序;
          -t, --field-separator=SEP:指定字段分隔符;
          -k, --key=KEYDEF:指明根据哪个关键字段进行排序,一般和-t同时使用;

      uniq:report or omit repeated lines
          -d, --repeated:只显示重复出现的行,而且每一组重复行只显示一行;
          -u, --unique:只显示不重复的行;
          -c, --count:在每行以前缀的方式显示重复行的重复次数;

      diff:compare files line by line
          同一文件的不同修改版本;打补丁;

      patch:apply changes to files
           patch [-R][-i patchfile] [file]

本文出自 “fuboyuan” 博客,谢绝转载!

grep系的相关内容