我有一个包含以下架构的CSV文件million_songs_metadata_and_sales.csv
。
track_id
sales_date
sales_count
title
song_id
release
artist_id
artist_mbid
artist_name
duration
artist_familiarity
artist_hotttnesss
year
示例数据:
TRZZZZZ12903D05E3A,2014-06-19,79,Infra Stellar,SOZPUEF12AF72A9F2A,Archives Vol. 2,ARBG8621187FB54842,4279aba0-1bde-40a9-8fb2-c63d165dc554,Delerium,495.22893,0.69652442519,0.498471038842,2001
我需要在BASH中编写一个查询,以使用文件million_songs_metadata_and_sales.csv
查找具有最大销售额的artist_name。
我编写了以下脚本,但未能提供正确的数据:
awk 'max=="" || $3 > max {max=$3} END{ print $9}' FS="," million_songs_metadata_and_sales.csv
有关此问题的任何解决方法吗? 谢谢!
答案 0 :(得分:2)
$N
正在处理某一行时,才能使用 awk
。
$ cat file.csv
TRZZZZZ12903D05E3A,2014-06-19,77,Infra Stellar,SOZPUEF12AF72A9F2A,Archives Vol. 2,ARBG8621187FB54842,4279aba0-1bde-40a9-8fb2-c63d165dc554,Delerium 1,495.22893,0.69652442519,0.498471038842,2001
TRZZZZZ12903D05E3A,2014-06-19,79,Infra Stellar,SOZPUEF12AF72A9F2A,Archives Vol. 2,ARBG8621187FB54842,4279aba0-1bde-40a9-8fb2-c63d165dc554,Delerium,495.22893,0.69652442519,0.498471038842,2001
TRZZZZZ12903D05E3A,2014-06-19,78,Infra Stellar,SOZPUEF12AF72A9F2A,Archives Vol. 2,ARBG8621187FB54842,4279aba0-1bde-40a9-8fb2-c63d165dc554,Delerium 2,495.22893,0.69652442519,0.498471038842,2001
$ awk 'BEGIN { max=0 } $3 > max { max=$3; name=$9 } END { print name }' FS="," file.csv
Delerium
$
答案 1 :(得分:2)
在
cut -d, -f3,9 < data.csv | sort -nr | head -1
会这样做。
如果某些列包含逗号,则会立即失败。要进行正确的CSV解析,您需要使用一些cvs-parsing库。