Shell 将多个CSV按列组合为一个CSV

Shell 将多个CSV按列组合为一个CSV,shell,csv,Shell,Csv,我有许多csv文件,其中第1列具有相同的信息,但第2列不同 例如。 CSV1有以下信息 AAA, 11 BBB, 22 CCC, 33 CSV2具有以下特性 AAA, 1111 BBB, 2222 CCC, 3333 我试图对文件进行分类,结果得到一个由行连接的文件。但我正在寻找类似以下输出的新csv。我正在寻找一种在shell中实现它的方法 Result.csv应为 AAA, 11, 1111 BBB, 22, 2222 CCC, 33, 3333 使用: 第一个文件: $ cat 1

我有许多csv文件,其中第1列具有相同的信息,但第2列不同

例如。 CSV1有以下信息

AAA, 11
BBB, 22
CCC, 33
CSV2具有以下特性

AAA, 1111
BBB, 2222
CCC, 3333
我试图对文件进行分类,结果得到一个由行连接的文件。但我正在寻找类似以下输出的新csv。我正在寻找一种在shell中实现它的方法

Result.csv应为

AAA, 11, 1111
BBB, 22, 2222
CCC, 33, 3333
使用:

第一个文件:

$ cat 1
AAA, 11
BBB, 22
CCC, 33
第二个文件:

$ cat 2
AAA, 1111
BBB, 2222
CCC, 3333
加入他们:

$ join -t, 1 2
AAA, 11, 1111
BBB, 22, 2222
CCC, 33, 3333
使用:

第一个文件:

$ cat 1
AAA, 11
BBB, 22
CCC, 33
第二个文件:

$ cat 2
AAA, 1111
BBB, 2222
CCC, 3333
加入他们:

$ join -t, 1 2
AAA, 11, 1111
BBB, 22, 2222
CCC, 33, 3333
试试这一行:

 awk -F, -v OFS="," '{a[$1]=a[$1]?a[$1]FS$2:$2}END{for(x in a)print x,a[x]}' file1 2 3 .... 
试试这一行:

 awk -F, -v OFS="," '{a[$1]=a[$1]?a[$1]FS$2:$2}END{for(x in a)print x,a[x]}' file1 2 3 .... 

谢谢,但是我有20多个相同格式的文件。你认为这是理想的解决方案吗。还有其他方法吗?那么请提供一个真实用例的示例。谢谢,但我有20多个相同格式的文件。你认为这是理想的解决方案吗。还有其他方法吗?然后请提供一个真实用例的示例。cd$testFolder/Results echo>Results.csv cd。。对于f in$(find.-name“sample.csv”)执行echo$f cat$f>>Results.csv done#因此现在,我想使用顶部给出的awk,而不是cat。但是我不想手动提供文件作为输入。它应该找到每个sample.csv文件,并像我在问题中提到的那样,继续附加到Results.csv。有办法做到这一点吗?cd$testFolder/Results echo>Results.csv cd。。对于f in$(find.-name“sample.csv”)执行echo$f cat$f>>Results.csv done#因此现在,我想使用顶部给出的awk,而不是cat。但是我不想手动提供文件作为输入。它应该找到每个sample.csv文件,并像我在问题中提到的那样,继续附加到Results.csv。有办法做到这一点吗?