[英]Bash sum from file
例如,我有一个文件
a 1:2:3:4:5
b 2:3:4:5:6
输出必须是:
a 15
b 20
我必须在输出的第二列中添加数字:
echo $((${line// /+}));done < $1
总和,但我不知道如何更改分隔符:
(我不知道如何使用
tr
)。
你很亲近 当您有一个像1:2:3
这样的字符串并且想要获得以冒号分隔的数字之和时,可以使用
$ var='1:2:3'
$ echo "$(( ${var//:/+} ))"
6
将其应用于您的循环:
while read -r first rest; do
printf '%s %d\n' "$first" "$(( ${rest//:/+} ))"
done < infile
其中first
将包含第一列, rest
是用冒号分隔的字符串。
输出看起来像
a 15
b 20
跟随awk
可能会帮助您。
awk '{num=split($2,a,":");for(i=1;i<=num;i++){sum+=a[i]};print $1,sum;sum=""}' Input_file
输出如下。
a 15
b 20
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.