【发布时间】:2015-04-16 13:56:47
【问题描述】:
使用 Shell 脚本 (Bash),我试图对列表中所有不同变量的列求和。假设我有以下 Test.tsv 文件的输入
Win Lost
Anna 1 1
Charlotte 3 1
Lauren 5 5
Lauren 6 3
Charlotte 3 2
Charlotte 4 5
Charlotte 2 5
Anna 6 4
Charlotte 2 3
Lauren 3 6
Anna 1 2
Anna 6 2
Lauren 2 1
Lauren 5 5
Lauren 6 6
Charlotte 1 3
Anna 1 4
我想总结一下每个参与者的赢和输。所以我想得到这个结果:
Sum Win Sum Lost
Anna 57 58
Charlotte 56 57
Lauren 53 56
我通常会做的是每人每列的总和,然后一遍又一遍地重复这个过程。请参阅下面提到的示例我将如何做:
cat Test.tsv | grep -Pi '\bAnna\b' | cut -f2 -d$'\t' |paste -sd+ | bc > Output.tsv
cat Test.tsv | grep -Pi '\bCharlotte\b' | cut -f2 -d$'\t' |paste -sd+ | bc >> Output.tsv
cat Test.tsv | grep -Pi '\bLauren\b' | cut -f2 -d$'\t' |paste -sd+ | bc >> Output.tsv
cat Test.tsv | grep -Pi '\bAnna\b' | cut -f3 -d$'\t' |paste -sd+ | bc > Output.tsv
cat Test.tsv | grep -Pi '\bCharlotte\b' | cut -f3 -d$'\t' |paste -sd+ | bc >> Output.tsv
cat Test.tsv | grep -Pi '\bLauren\b' | cut -f3 -d$'\t' |paste -sd+ | bc >> Output.tsv
但是,我需要为每个参与者重复此行。当您有许多变量要总结时,这会变得很痛苦。
编写此脚本的方法是什么?
谢谢!
【问题讨论】:
标签: bash shell sum multiple-columns