如何加入两个CSV文件?

crs*_*t53 32 linux csv

假设您有一个包含 2 个字段的 CSV 文件:ID 和电子邮件。您还有另一个包含 2 个字段的文件:电子邮件和姓名。您如何生成一个所有三个字段都加入电子邮件的文件?

Tgr*_*Tgr 36

使用csvkit

csvjoin -c email id_email.csv email_name.csv
Run Code Online (Sandbox Code Playgroud)

或者

csvjoin -c 2,1 id_email.csv email_name.csv
Run Code Online (Sandbox Code Playgroud)

  • 为什么这不是最佳答案? (9认同)

hyp*_*lug 33

修订版 3

您必须按字母顺序对电子邮件中的两个列表进行排序,然后加入。鉴于电子邮件字段是 file1 的第二个字段和 file2 的第一个字段:

sort -t , -k 2,2 file1.csv > sort1.csv
sort -t , -k 1,1 file2.csv > sort2.csv
join -t , -1 2 -2 1 sort1.csv sort2.csv > sort3.csv
Run Code Online (Sandbox Code Playgroud)

参数意义

-t , : ',' 是字段分隔符
-k 2,2 : 第二个字段的字符排序
-k 1,1 :第一个字段的字符排序
-1 2 : 文件 1,第二个字段
-2 1 : 文件 2,第一个字段
> : 输出到文件

产生

电子邮件,ID,姓名
电子邮件,ID,姓名
...

按字母顺序按电子邮件排序。

请注意,如果任一文件中缺少任何电子邮件,结果中都会忽略该电子邮件。

  • CSV 比这更复杂。例如,可以对字段分隔符进行转义。 (2认同)

Pet*_*sen 6

也许这有点矫枉过正,但您可以将两种表格导入到数据库(例如 OpenOffice Base)中,并定义作为所需输出的报告。

如果 CSV 导入有问题,则可以使用电子表格程序(例如 OpenOffice Calc)进行导入。然后可以轻松地将结果传输到数据库。