【问题标题】:use regex or in cat使用正则表达式或在 cat
【发布时间】:2013-11-27 15:39:26
【问题描述】:

我有一些以时间结束的日志文件

1200.gz
1215.gz
1230.gz
1245.gz
1300.gz

当我想搜索所有 12 点钟的文件时,我会使用 zcat 12**.gz | grep whatever,但通常需要很长时间。有没有办法使用正则表达式“或”zcat 12(00|15)This tutorial 看起来我可以只使用方括号,但我得到了 command not found 错误。

【问题讨论】:

    标签: regex linux unix cat


    【解决方案1】:

    这与 (z)cat 命令无关,这是一个 shell 问题。

    似乎good old brace expansion 应该适用于这种情况:

    $ zcat 12{00,15}.gz | grep whatever
    

    【讨论】:

      【解决方案2】:

      你为什么使用zcat and grep?您可以直接使用zgrep command在压缩文件中搜索模式:

      zgrep 'whatever' 12{00,15}.gz
      

      【讨论】:

      • 谢谢! zgrep 在zcat file.txt | grep 'id=1' | grep 'fid="500' 上下文中是更快还是更慢?
      • 它确实将 2 个管道命令合并为一个,所以应该会更好。
      • 我怎样才能用 zgrep 链接我的两个 grep?我可以将所有内容合二为一以使 grep 更快吗?
      • 你可以使用zgrep -e 'pattern1' -e 'pattern2' 12{00,15}.gz
      • 文档看起来像-e 只需要一个模式;我可以将它与我的文字刺痛fid=500id=1 一起使用吗?
      【解决方案3】:

      使用,您可以使用extended globbing

      shopt -s extglob
      zcat 12@(00|15).gz | grep text
      

      如果可用,为什么不使用zgrep

      zgrep text 12@(00|15).gz 
      

      【讨论】:

        猜你喜欢
        • 2018-05-22
        • 1970-01-01
        • 2020-09-14
        • 2019-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-06
        相关资源
        最近更新 更多