bash - awk 从 csv 文件总结 for 循环中的最后 n 个元素

标签 bash for-loop ubuntu variables awk

我想总结一下最后n只有一行的 csv 文件的元素。
预期result应该是 110请参阅下面的示例 csv 文件。
在 awk 函数中,我将传递的值从 bash 脚本转换为 int ,但它仍然失败。
for 循环应该对每个元素求和,然后将结果分配给 sum由 awk 变量 print陈述

RWP="/foo/bar/rwp.csv"
DL=";"

function rrwpsh() {

    local n="${1}"
    
    local length=$(awk --field-separator=$DL '{ print NF; exit }' $RWP)
    local lower_bound=$[$length-$n]
    
    local sum=$(awk --field-separator=$DL -v lower_boundxxx=$lower_bound -v lengthxxx=$length 'BEGIN{lower_boundxxx_int=int(lower_boundxxx);lengthxxx_int=int(lengthxxx);for(j=lower_boundxxx_int;j<=lengthxxx_int;j++)x+=$j;print x}' $RWP)

    echo "sum: " $sum
}

let n=3 # example value
result=$(rrwpsh $n)
echo -e "result " $result
csv 文件包含数字
20;1;2;100;7;3

最佳答案

来自标准输入:

$ echo "20;1;2;100;7;3" | awk -F\; -v n=3 '{for(i=0;i<n;i++)s+=$(NF-i);print s}'
110
从文件:
$ awk -F\; -v n=3 '{    # set delimiter and the n value
    for(i=0;i<n;i++)    # looping from 0..(n-1)
        s+=$(NF-i)      # sum up related fields
    print s             # output
}' file

关于bash - awk 从 csv 文件总结 for 循环中的最后 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65393292/

相关文章:

linux - Docker Bash 提示不显示颜色输出

python - Python 中的“For”循环行为

java 。为什么这个for循环不能正常工作

java - 跨平台使用带目录的程序

linux - 如何提取2个xml标签之间的字符串?

linux - 如何在 osx El Capitan 中的多个文件中 grep 和替换字符串

java - 第 (N-2) 和 (N-1) 的第 N 个输出和

linux - K8s 'calico' pod 未启动 : "Failed to create default IPv4 IP pool: 10.244.0.0/16 error=resource does not exist:"

java - Swing DJnative Swing Java 示例

linux - 如何使用 Bash 脚本拆分换行符?