zoukankan      html  css  js  c++  java
  • grep常见使用方法总结

    grep -E 'l{2,}' 2.txt
    grep -E 'h(ell|a)o' test.txt
    grep '[a-z]{5,}' test.txt
    grep -xf a.txt b.txt  //查询a与b共同存在的行
    grep -vxf b.txt a.txt //查询a的行不在b文件中面的,就是a比b多出来的行
     
    grep -v '^h' test.txt //显示非以h开发的
      
    grep -E '^(h|y)' test.txt //-E支持扩展正则,相当于egrep
     
    grep -A 1 'hello' test.txt  //除了显示匹配到的行也显示它之后的一行
    grep -B 1 'hello' test.txt  //除了显示匹配到的行也显示它之前的一行
    grep -C 1 'hello' test.txt  //除了显示匹配到的行也显示它之前和之后的一行
     
    grep -r "hello" xx //在xx文件夹查找
    grep -c //统计匹配的行数
    grep -n //显示行号
    
    grep -v '^hello' test.txt //显示不以hello开头的行
    --非常聪明的写法,第一位不以h开发,第二位不以e开发。。。
      grep  '^[^h]|^.[^e]|^..[^l]|^...[^l]|^....[^o]'
      
    [options]主要參数:
    -c:仅仅输出匹配行的计数。
    -I:不区分大 小写(仅仅适用于单字符)。
    -h:查询多文件时不显示文件名称。
    -l:查询多文件时仅仅输出包括匹配字符的文件名称。
    -n:显示匹配行及 行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包括匹配文本的全部行。

    命令正則表達式: . 匹配单个字符 如..X yiX能查出来 ^ 匹配行首 ^d 每行第一个字符为d $ 匹配行尾 T$ 每行最后一个字符为T * 匹配随意字符串 屏蔽特殊字符的含义 A{2}B 字母A出现两次 A{2,}B 至少出现两次 A{2,4}B 出现2到4次 [0-9]{4}xx[0-9]{4} 前四个是数字,中间是xx,后四个是数字 pattern正則表達式主要參数: : 忽略正則表達式中特殊字符的原有含义。

    ^:匹配正則表達式的開始行。 $: 匹配正則表達式的结束行。

    <:从匹配正则表达 式的行開始。 锚定单词的開始。如:/<love/匹配包括以love开头的单词的行。 >:到匹配正則表達式的行结束。 [ ]:单个字符。如[A]即A符合要求 。

    [ - ]:范围。如[A-Z],即A、B、C一直到Z都符合要求 。 。:全部的单个字符。 * :有字符,长度能够为0 [^] 匹配一个不在指定范围内的字符。如:/[^A-RT-Z]ed/匹配不包括A-R和T-Z的一个字母开头。紧跟ed的行。

    + 匹配前面的子表达式一次或多次。比如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。

    ? 匹配前面的子表达式零次或一次。比如。"do(es)?" 能够匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 (?=pattern) 正向预查,在不论什么匹配 pattern 的字符串開始处匹配查找字符串。

    这是一个非获取匹配。也就是说,该匹配不须要获取供以后使用。

    比如。 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符。也就是说。在一个匹配发生后,在最后一次匹配之后马上開始下一次匹配的搜索,而不是从包括预查的字符之后開始。 (?

    !pattern) 负向预查,在不论什么不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串開始处匹配查找字符串。

    这是一个非获取匹配,也就是说,该匹配不须要获取供以后使用。比如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。

    预查不消耗字符,也就是说。在一个匹配发生后。在最后一次匹配之后马上開始下一次匹配的搜索,而不是从包括预查的字符之后開始 (?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

    这在使用 "或" 字符 (|) 来组合一个模式的各个部分是非常实用。 比如。 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式 pcregrep 'Windows (?=2000|95|98|NT)' test.txt //Windows后面是2000或95.. pcregrep 'Windows (?!2000|95|98|NT)' test.txt //Windows后面非2000,95,98等 pcregrep 'Windows (?:95|98|NT|2000)' test.txt //与第一种一样 egrep: 为 grep 的扩充版本号, 改良了很多传统 grep 不能或不便的操作. 比如说: - grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可. - grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可. fgrep: 不作 RE 处理, 表达式仅作一般字符串处理, 全部 meta 均失去功能. pcregrep: pcregrep - a grep with Perl-compatible regular expressions , perl正则。是最流行和规范的


  • 相关阅读:
    uninstall_edge:win10带浏览器edge卸载工具
    安装spacedesk后,Win10状态栏图标间距变宽
    jacob实现语音朗读一段文本
    汇编语言-12内中断
    告警只提示一次,未解决也不再次提示
    汇编语言-11标志寄存器
    第2章 顺序表及其顺序存储
    第1章 概论
    再见:计算机行业
    QPainter
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7064036.html
Copyright © 2011-2022 走看看