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 库。
我有一个 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
.
我写了下面的脚本,但它没有给我正确的数据:
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 库。