gpt4 book ai didi

bash - 在没有 zgrep 的情况下对压缩文件进行 grep

转载 作者:行者123 更新时间:2023-11-29 09:27:14 25 4
gpt4 key购买 nike

我需要针对特定​​模式对一组文件(一些压缩,一些未压缩)进行 grep。我知道 zgrep 可用于对压缩文件进行 grep,但正在运行的脚本依赖于具有不同逻辑的返回码,用于返回码 0、1 和其他任何内容。

grep 声明:如果找到选定的行,则退出状态为 0,否则为 1。 2 如果发生错误。

zgrep 声明它的工作方式与 grep 相同,但可以处理压缩文件。

但是有 2 个文件:

#test1
hello

#test2
goodbye

都在同一个目录

grep "hello"* 按预期返回 0,因为在 test1 中找到了模式

zgrep "hello"* 但是返回 1,即使在 test1 中找到了模式。它返回 1,因为在 test2 中找不到该模式。事实证明,如果任何文件不匹配该模式,则返回 1,即使所有其他文件都匹配该模式。

对于我的情况,我只关心是否至少有 1 个文件匹配或没有文件匹配。如果有人这样做而有人不这样做,那应该算作成功。

那么有什么方法可以在没有 zgrep 的情况下对压缩和解压缩的文件进行 grep 并获得正确的返回码,因为 zgrep 似乎有问题?

grep 版本:2.20

zgrep 版本:1.5

注意:如果没有长达数月的审批流程,我甚至系统管理员都无法更改这些版本号,因此请避免使用“更新你的东西”之类的解决方案

最佳答案

这似乎是 zgrep 中的错误。试试 xzgrep

$ xzgrep -q hello *; echo $?
0
$ zgrep -q hello *;echo $?
1
$ grep -q hello *;echo $?
0

如果文件总是gzipped,您也可以同时使用zcatgrep

$ zcat * | grep -q hello; echo $?

关于bash - 在没有 zgrep 的情况下对压缩文件进行 grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48888758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com