繁体   English   中英

文件中的重击金额

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM