【问题标题】:zcat pipe to grepzcat 管道到 grep
【发布时间】:2010-10-12 15:36:38
【问题描述】:
ls -ltr|grep 'Mar  4'| awk '{print $9 }'|zcat -fq |grep  12345

我想查找在某个日期修改的所有文件,然后对它们进行 zcat 并在文件中搜索数字字符串。

上述方法不起作用,因为它在文件名中搜索字符串而不是文件本身。

有什么帮助吗?

M

【问题讨论】:

    标签: unix grep zcat


    【解决方案1】:

    使用 xargs 对 awk 输出的文件名运行 grep:

    ls -ltr | grep 'Mar 4' | awk '{print 9}' | xargs zcat -fq | grep 12345
    

    或者,我猜,从 awk 本身运行管道的其余部分。

    【讨论】:

      【解决方案2】:

      尝试改用find。和/或xargs

      【讨论】:

        【解决方案3】:

        如果我正确阅读了您的命令行,则它的 zcat 正在尝试解压缩文件名而不是其内容。使用 xargs 来解决这个问题:

        ls -ltr|grep 'Mar  4'| awk '{print $9 }'|xargs zcat -fq |grep  12345
        

        【讨论】:

          【解决方案4】:

          除了关于使用xargsfind 的正确答案之外,您还可以通过消除zcat 并改为管道到zgrepgrep -Z 来摆脱额外的过程。

          【讨论】:

          • 在我的系统 (OS X) 上,grep -Z 并没有像你想象的那样做。
          • 显然不在我方便的 Linux 上。哎呀。那么 zgrep 是更好的选择。
          猜你喜欢
          • 2010-10-12
          • 1970-01-01
          • 2016-08-22
          • 1970-01-01
          • 1970-01-01
          • 2011-01-20
          • 1970-01-01
          • 2020-06-10
          • 2017-01-12
          相关资源
          最近更新 更多