gpt4 book ai didi

Bash 脚本需要 for 循环中的数组值

转载 作者:行者123 更新时间:2023-11-29 09:37:48 24 4
gpt4 key购买 nike

我有如下的数组值,并在下面的 for 循环中使用。

a=(400 402 403 404)

for i in "${a[@]}"
do
echo $i;
done

输出

400
402
403
404

我需要一个一个地获取数组值并按如下方式使用。

for i in "${a[@]}"
do
awk '{if($8==$i) print} filename.log | wc -l;
done

我需要在 httpderror.log 中找到错误计数,因此我将一个一个地传递 http 错误代码以检查文件并打印在每个 http 代码中发现的错误计数。在第 8 列 ($8==$i) 中发现 HTTP 错误。

输出应该是匹配行的错误计数,如 400 - 44、402 -43 但只需要如下值..

 44
43
42

请帮我看看怎么做....

最佳答案

你可以这样做:

for i in "${a[@]}"
do
awk -v code="$i" '$8==code{c++} END{print code, "-", c}' filename.log
done

不过,我建议直接在 awk 中执行此操作,避免为数组中的每个元素调用 awk 命令

awk 'BEGIN {
a[400]=a[402]=a[403]=a[404]=0
}
$8 in a {
a[$8]++
}
END {
for (i in a)
print i, "-", a[i]
}' filename.log

关于Bash 脚本需要 for 循环中的数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36436351/

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