【发布时间】:2015-05-01 23:45:47
【问题描述】:
我有以下 csv 文件file1.csv
sales,artist
10,0131
10,0131
10,10_000 Maniacs
10,1000names
15,E1001 Ways
15,E1001 Ways
10,S101 Strings Orchestra
10,D101 Strings Orchestra
10,x0cc
10,x0cc
我正在编写一个 BASH 命令来查找每个艺术家的总销售额。输出按总销售额降序排列。
Expected output.
30,E1001 Ways
20,0131
20,x0cc
10,10_000 Maniacs
10,1000names
10,S101 Strings Orchestra
10,D101 Strings Orchestra
我编写了代码来查找最大值,但它给了我所有艺术家的最大销售额,而不是每个艺术家的总销售额最大值。
sort -nr file1.csv | awk 'BEGIN { FS="," }{ print $2; }'
任何帮助解决这个问题? 谢谢。
输出
awk -F, 'NR > 1 { sales[$9] += $3 } END { for(s in sales) print sales[s] FS s }' million_songs_metadata_and_sales.csv | sort -nr -k1 | head -10
903,10000 Maniacs
562,51717
513,12012
506,35007
350,37500 Yens
2788,7000 Dying Rats
2325,2002
2210,1001 Ways
1992,1349
1968,1200 Techniques
【问题讨论】:
-
如果以这种方式排序,则将其通过管道传送到
awk,并在 ID E1001,0131 等发生更改时选择/打印第一个条目。希望这可以帮助。问候