gpt4 book ai didi

awk - 如何在 unix 中基于一个匹配列合并两个 csv 文件。两个文件中列的位置不同

转载 作者:行者123 更新时间:2023-12-04 13:53:06 26 4
gpt4 key购买 nike

我想根据匹配的列值将 file2.csv 与 file1.csv 合并。文件 2 的 col1 需要与文件 1 的 col4 匹配。如果匹配,则将 file2.csv 与 file1.csv 合并。

文件2.csv

1111_2222_2222,3333
1112_2223_2224,3333

文件1.csv

d20200317,v0000,7777,2001_0218_AAAA,111
d20200318,v0000,7777,0102_5913_AAA,111

我尝试了下面的 awk 命令,但它不起作用:

awk 'NR==FNR{a[$2]=$1;next}{print $0"," a[$1];}' File1.csv file2.csv

最佳答案

为什么 OP 的尝试没有成功: 默认 awk 使用字段分隔符作为空格,所以我们需要设置 FS 值设置为 =,因为 csv 文件中的字段分隔符是 ,

考虑到您要合并文件并将列从 Input_file1.csv 添加到 Input_file2.csv 的最后位置。

awk 'BEGIN{FS=OFS=","} FNR==NR{a[$1]=$2;next} $4 in a{print $0,a[$4]}'  file1.csv  file2.csv

输出如下。

d20200317,v22​​221,7395,2001_0218_AAAA,111d20200318,v22221,7395,0102_5913_AAA,111

关于awk - 如何在 unix 中基于一个匹配列合并两个 csv 文件。两个文件中列的位置不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60720993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com