BASH:根据公共字段名称加入2个CSV文件
发布时间:2020-12-15 21:44:08 所属栏目:安全 来源:网络整理
导读:我有2个CSV文件,我需要使用BASH加入它们: file_1.csv columns: track_id titlesong_id release artist_id artist_mbid artist_name duration artist_familiarity artist_hotttnesssyearSample date in file_1.csvTRZZZZZ12903D05E3A,Infra Stellar,SOZPUEF1
我有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_1.track_id = file_2.track_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 和 awk -F,'NR==FNR{a[$0]=$0;next} ($1 in a){print a[$1]"," > "file_3.csv"}' file_1.csv file_2.csv 虽然创建了file_3.csv,但它是一个空文件. 谢谢! 解决方法
以下join命令应该可以解决这个问题:
join --header -t',' -j 1 file_2.csv file_1.csv 只需确保您的CSV文件在连接字段中排序;有 您应该在两个文件中使用测试数据,并且当您对命令正在执行所需操作感到满意时,可以针对实际数据运行它并将其输出重定向到file_3.csv. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |