我想总结一下最后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/