gpt4 book ai didi

awk - 有人可以帮助我在其他列上使用 awk 获得列的平均值吗

转载 作者:行者123 更新时间:2023-12-04 19:30:07 26 4
gpt4 key购买 nike

awk -F, '{if ($2 == 0) awk '{ total += $3; count++ } END { print total/count }' CLN_Tapes_LON; }' /tmp/CLN_Tapes_LON

awk: {if ($2 == 0) awk {
awk: ^ syntax error
bash: count++: command not found

最佳答案

只是为了好玩,让我们看看您的原始版本有什么问题,然后逐步将其转换为可用的版本。这是您的初始版本(我将其称为版本 0):

awk -F, '{if ($2 == 0) awk '{ total += $3; count++ } END { print total/count }' CLN_Tapes_LON; }' /tmp/CLN_Tapes_LON

-F, 将字段分隔符设置为逗号字符,但您后面的评论似乎表明列(字段)由空格分隔。所以让我们摆脱它; whitespace-separation 是 awk 默认期望的。版本 1:

awk '{if ($2 == 0) awk '{ total += $3; count++ } END { print total/count }' CLN_Tapes_LON; }' /tmp/CLN_Tapes_LON

您似乎试图在 awk 程序中嵌套对 awk 的调用?几乎从来没有任何要求这样做,无论如何这都不是这样做的方法。让我们同时去掉不匹配的引号:顺便注意,您不能以这种方式将单引号嵌套在另一对单引号中:您必须以某种方式转义它们。但这里根本不需要它们。版本 2:

awk '{if ($2 == 0) { total += $3; count++ } END { print total/count } }' /tmp/CLN_Tapes_LON

这很接近但不太正确:END block 仅在所有输入行处理完毕后执行:将它放在 if 。所以让我们把它移到大括号外面。我还要收紧一些空白。版本 3:

awk '{if ($2==0) {total+=$3; count++}} END{print total/count}' /tmp/CLN_Tapes_LON

第 3 版确实有效,您可以到此为止。但是 awk 有一个方便的方法来指定只针对符合条件的行运行代码块:'condition {code}' 所以你可以更简单地写成:

awk '$2==0 {total+=$3; count++} END{print total/count}' /tmp/CLN_Tapes_LON

...当然,这几乎正是 John1024 所建议的。

关于awk - 有人可以帮助我在其他列上使用 awk 获得列的平均值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29911738/

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