我想总结一个只有一行的csv文件的最后n
元素。
预期的result
应为110
,请参阅下面的csv文件示例。
在awk函数中,我将bash脚本中传递的值强制转换为int,但它仍然失败。for循环应该对每个元素求和,然后通过awkprint
语句将结果分配给sum
变量
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
来自stdin:
$ 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