我有一个文本文件,它是:
ABC 50
DEF 70
XYZ 20
DEF 100
MNP 60
ABC 30
我想要一个输出来总结各个值并将它们显示为结果。例如,文件中所有 ABC 值的总和为 (50 + 30 = 80),DEF 为 (100 + 70 = 170)。因此,输出应将所有唯一的第一列名称总结为 -
ABC 80
DEF 170
XYZ 20
MNP 60
任何帮助将不胜感激。
谢谢
我有一个文本文件,它是:
ABC 50
DEF 70
XYZ 20
DEF 100
MNP 60
ABC 30
我想要一个输出来总结各个值并将它们显示为结果。例如,文件中所有 ABC 值的总和为 (50 + 30 = 80),DEF 为 (100 + 70 = 170)。因此,输出应将所有唯一的第一列名称总结为 -
ABC 80
DEF 170
XYZ 20
MNP 60
任何帮助将不胜感激。
谢谢
$ awk '{a[$1]+=$2}END{for(i in a) print i,a[i]}' file
ABC 80
XYZ 20
MNP 60
DEF 170
$ perl-车道\ '$sum{$F[0]} += $F[1]; END { 打印“$_ $sum{$_}” 对于排序 grep 长度,键 %sum }' \ 输入 ABC 80 防御力 170 MNP 60 XYZ 20
awk '{sums[$1] += $2} END { for (i in sums) printf("%s %s\n", i, sums[i])}' input_file | sort
如果您不需要按字母顺序排序的结果,只需删除该| sort
部分。
perl -lane '$_{$F[0]}+=$F[1]}print"$_ $_{$_}"for keys%_;{' file
还有一点不那么简单:
perl -ape '$_{$F[0]}+=$F[1]}map$\.="$_ $_{$_}\n",keys%_;{' file
my %data;
while (<>) {
if (my ($key, $value) = /^(\w+) \s* (\d+)$/x) {
$data{$key} += $value;
}
}
printf "%s %s\n", $_, $data{$_} for keys %data;