AWK:基于第二列“名称总计”添加列值的脚本

时间:2013-09-06 06:29:40

标签: bash awk

我有一个以下模式的文件

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脚本来查找所需的输出。

2 个答案:

答案 0 :(得分:2)

使用awk:

awk '{s[$1]+=$2}END{for (i in s) print i,s[i]}' file

答案 1 :(得分: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