0

我有以下模式的文件

LLCMO   101986
ONE 102419
PAZ 10478
ONE 107788
ONE 108377
NXT 11
PORTA   111170
PORTA   112005
PORTA   114075
LLCMO   114198
PORTA   114268
PORTA   119021
PORTA   119406

我想以某种模式打印此文件,以便它根据第 1 列中的所有者名称添加列的值。

输出应如下所示:

LLCMO   216184
ONE 318584
PAZ 10478
NXT 11
PORTA   570539

请建议是否可以编写 awk 脚本来查找所需的输出。

4

2 回答 2

2

使用 awk:

awk '{s[$1]+=$2}END{for (i in s) print i,s[i]}' file
于 2013-09-06T06:33:13.630 回答
1

这在纯 bash 中非常简单:

#!/bin/bash

declare -A data

while read -r key value; do
    (( data[$key]+=value ))
done < file.txt

for curKey in "${!data[@]}"; do
    echo "$curKey ${data[$curKey]}"
done
于 2013-09-06T10:06:43.130 回答