文件中的 AWK 总和列指定为参数

文件中的 AWK 总和列指定为参数

我想编写一个脚本来总结我在文件中的专栏。他想要作为参数给出的列数。可能有好几个。我不知道如何用 awk 解决这个问题,所以总结了几列。

cat count.txt | awk '{ sum+=$1} END {print sum}'

例如,这段代码对一列求和,那么列数不是恒定的吗?仅取决于用户输入的内容?

例如。我想对第 2、5、1 列或下次 6、3、2 等列进行求和。

答案1

首先,不需要cat——awk 知道如何读取文件。

您需要使用选项将列作为逗号分隔的字符串传递-v,然后在 awk 的 BEGIN 块中分割字符串

awk -v cols="2,5,1" '
    BEGIN {n = split(cols, ary, /,/); sum=0}
    {for (i=1; i<=n; i++) sum += $(ary[i])}
    END {print sum}
' count.txt

split返回生成的元素数量,因此请务必保存此值,以便稍后可以循环遍历数组。

相关内容