【问题标题】:How to find numbers of specific format and filter out certain range of values?如何查找特定格式的数字并过滤掉特定范围的值?
【发布时间】:2013-02-13 12:38:13
【问题描述】:

如何找到格式为 0.xzy 的数字,其中 xzy 是数字,x 是 8-9,并在每个匹配项(包括)前写 5 行到 outputfile.txt

【问题讨论】:

    标签: linux unix grep


    【解决方案1】:

    查找格式为0.xzy的数字(使用字边界不强制整行匹配)并打印匹配-B5之前的第5行并将输出重定向到outfile

    $ grep -B5 -Ew '0\.[0-9]{3}' file > outfile
    
    # fix x to 8 or 9
    $ grep -B5 -Ew '0\.[8-9][0-9]{2}' file > outfile
    

    注意:. 需要转义以表示文字句点,否则 01234 将匹配。你会发现man grep 很有帮助!

    【讨论】:

      【解决方案2】:

      0.xzy 格式查找数字(xzy 是数字)

      grep "^0.[0-9][0-9][0-9]$" file
      

      查找 x 为 8-9 的情况

      grep "^0.[89][0-9][0-9]$" file
      

      【讨论】:

      • 您需要转义 . 以避免过度匹配,并且 OP 没有声明整行匹配。 -[ABC] 标志也用于上下文匹配。
      • MMmm 听起来很有趣。那么grep ^0\.[0-9][0-9][0-9]$ 会起作用吗?
      • 现在你不会匹配 01234 更好但你也不会匹配 x: 0.923 因为锚点 ^,$
      • 好吧,我使用这些锚点是因为我从问题中得到,这是该行中唯一的文本,所以它必须以 0 开头并以 [0-9] 结尾...跨度>
      猜你喜欢
      • 2011-05-02
      • 2012-10-17
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多