BASH:基于公共字段名加入2个CSV文件

BASH:基于公共字段名加入2个CSV文件,bash,csv,join,awk,grep,Bash,Csv,Join,Awk,Grep,我有2个CSV文件,我需要使用BASH加入它们: file_1.csv columns: track_id title song_id release artist_id artist_mbid artist_name duration artist_familiarity artist_hotttnesss year Sample date in file_1.csv TRZZZZZ12903D05E3A,Infra Stellar,SOZPUEF12

我有2个CSV文件,我需要使用BASH加入它们:

file_1.csv columns: 

track_id    
title
song_id 
release 
artist_id   
artist_mbid 
artist_name 
duration    
artist_familiarity  
artist_hotttnesss
year

Sample date in file_1.csv

TRZZZZZ12903D05E3A,Infra Stellar,SOZPUEF12AF72A9F2A,Archives Vol. 2,ARBG8621187FB54842,4279aba0-1bde-40a9-8fb2-c63d165dc554,Delerium,495.22893,0.69652442519,0.498471038842,2001

file_2.csv columns: 

track_id    
sales_date  
sales_count

Sample data in file_2.csv

TRZZZZZ12903D05E3A,2014-06-19,79
文件之间的关系是
file\u 1.track\u id=file\u 2.track\u id

我想创建第三个文件
file_3.csv
,该文件将包含以下列:

file_2.track_id,file_2.sales_date,file_2.sales_count,file_1.title,file_1.song_id,file_1.release,file_1.artist_id,file_1.artist_mbid,file_1.artist_name,file_1.duration,file_1.artist_familiarity,file_1.artist_hotttnesss,file_1.year
我尝试过以下方法:

join -t',' -1 N -1 N file_2.csv file_1.csv >> file_3.csv

虽然创建了
文件\u 3.csv
,但它是一个空文件。 有什么办法吗


谢谢

下面的
join
命令应该可以做到这一点:

join --header -t',' -j 1 file_2.csv file_1.csv
只需确保您的CSV文件在连接字段中排序;有
track\u id
作为每个文件中的第一个字段,使此操作变得简单


您应该在这两个文件中使用测试数据,并且当您确信命令正在执行您想要的操作时,您可以根据实际数据运行它,并将其输出重定向到
文件\u 3.csv

只要对文件进行排序,Join就应该工作。尝试:

join -t, <(sort -t, -k1 file_2.csv) <(sort -t, -k1 file_1.csv) > file3.csv
join-t,与awk

awk -F, 'NR==FNR{a[$1]=substr($0,length($1)+2);next} ($1 in a){print $0","a[$1]}' file_1.csv file_2.csv > file_3.csv
文件3.csv内容:

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

如何使用此方法保留列标题?@Doug,在本例中,将保留标题,因为在这两个文件中,第一列的标题都是
track\u id
。因此,它们匹配并且标题行将被打印,就像任何其他具有匹配的第一列的行一样。即使表格行数不相同(即一个表格的行数大于另一个表格的行数),这是否也有效?
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