gpt4 book ai didi

linux - 为什么在 Grepping 文件 (.gz) 时,字数统计(即 -wc)中有很多零

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:40 27 4
gpt4 key购买 nike

我在计算一个字符串时得到了很多零。我需要为多个文件执行此操作。我也在尝试在 shell 脚本中执行此操作。但我不介意使用文件名输出计数数量的命令。

这目前有效,但对于 90 个文件来说太手动了:

less filename.log.2014-11-01.gz | grep -wc "burgers for 1 dollar"
count: 5678

使用上面的命令就可以了。但是当我多次尝试将它添加到我的 shell 脚本并运行脚本时,它返回零吗?这不可能是正确的:

#!/bin/bash

less filename.log.2014-11-01.gz | grep -wc "burgers for 1 dollar"
less filename.log.2014-11-02.gz | grep -wc "burgers for 1 dollar"
less filename.log.2014-11-03.gz | grep -wc "burgers for 1 dollar"
less filename.log.2014-11-04.gz | grep -wc "burgers for 1 dollar"

输出:

0
0
0
0
0

最佳答案

less 是一个交互式查看器,而不是用于提取 gzip 文件的命令。请尝试使用 gzcatzcat

(是的,有一些方法可以让 less 在幕后运行 gzcat,但这取决于并不总是可用的配置,正如您已经清楚地注意到的那样。 )

此外,您的代码将从一个简单的循环中受益匪浅。

for log in filename.log.2014-11-0[1234].gz; do
printf '%s:' "$log"
gzcat "$log" | grep -wc 'burgers for 1 dollar'
done

我将文件名添加到每个输出行以提高可用性。但是,当然,在这种特殊情况下,您想要

gzgrep -wc 'burgers for 1 dollar' filename.log.2014-11-0[1234].gz

然而,一些旧版本的 gzgrep 并没有完全暴露底层 grep 命令的全部功能,因此如果您需要,您可能需要恢复到循环只有 gzgrep 的遗留版本。

关于linux - 为什么在 Grepping 文件 (.gz) 时,字数统计(即 -wc)中有很多零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249232/

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