gpt4 book ai didi

linux - 在 Linux 中优化搜索

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

我有一个接近 3GB 的巨大日志文件。

我的任务是根据记录的次数生成一些报告。

我需要找到分别调用 StringA 、 StringB 、 StringC 的次数。

我现在正在做的是:

grep "StringA" server.log | wc -l
grep "StringB" server.log | wc -l
grep "StringC" server.log | wc -l

这是一个漫长的过程,我的脚本需要将近 10 分钟才能完成。我想知道的是这是否可以优化?是否可以运行一个 grep 命令并找出分别调用 StringA、StringB 和 StringC 的次数?

最佳答案

您可以使用 grep -c 代替 wc -l:

grep -c "StringA" server.log

grep 无法报告单个字符串的计数。你可以使用 awk:

out=$(awk '/StringA/{a++;} /StringB/{b++;} /StringC/{c++;} END{print a, b, c}' server.log)

然后您可以使用简单的 提取每个计数数组:

arr=($out)
echo "StringA="${arr[0]}
echo "StringA="${arr[1]}
echo "StringA="${arr[2]}

这个(grep 没有 wc)肯定会更快,awk 解决方案也可能更快。但是我没有测量过。

关于linux - 在 Linux 中优化搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109478/

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