BASH:在特定 CSV 列中查找最大值

BASH: Finding maximum value in a particular CSV column

我有一个 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=="" ||  > max {max=} END{ print }' FS="," million_songs_metadata_and_sales.csv

是否可以解决此问题? 谢谢!

$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 }  > max { max=; name= } END { print name }' FS="," file.csv
Delerium
$

cut -d, -f3,9 < data.csv | sort -nr | head -1

会的。

如果某些列包含逗号,则会立即失败。要正确解析 CSV,您需要使用一些 cvs-parsing 库。