次の入力があります。
Fred apples 20
Susy oranges 5
Mark watermellons 12
Robert pears 4
Robert oranges 17
Terry oranges 9
Lisa peaches 7
Susy oranges 12
Mark grapes 39
Anne mangoes 7
Greg pineapples 3
Oliver rockmellons 2
Betty limes 14
私は次の出力が欲しい:
Anne:
mangoes 7
Oliver:
rockmellons 2
Greg:
pineapples 3
Mark:
watermellons 12
grapes 39
Terry:
oranges 9
Susy:
oranges 17
Lisa:
peaches 7
Fred:
apples 20
Robert:
oranges 17
pears 4
Betty:
limes 14
これを行うには、awkコマンドを使用しようとしています。私のコードは次のとおりです
{
lines[$1] = (lines[$1] ? lines[$1] "\n " $2 " " $3 : $1 ":\n " $2 " " $3)
}
END {
for (line in lines) print lines[line]
}
2列目の重複項目を比較して数字を合計したいです。
ベストアンサー1
配列の配列を持つGNU awkを使用してください(gawkバージョン4が必要な場合があります)。
gawk '
NF { n[$1][$2] += $3 }
END {
for (name in n) {
print name ":"
for (fruit in n[name])
printf "%16s %2d\n", fruit, n[name][fruit]
}
}
'