如何从命令行合并两个 CSV 文件?

Posted

技术标签:

【中文标题】如何从命令行合并两个 CSV 文件?【英文标题】:How can I merge two CSV files from command line? 【发布时间】:2015-06-11 12:56:32 【问题描述】:

我有两个标题相同的 CSV 文件,分别称为 a.csv 和 b.csv。如何将这两个文件合并到第三个 c.csv 中,使 c 由 a 和 b 中的所有行组成?

【问题讨论】:

【参考方案1】:

基本合并是

 cat a.csv <(tail +2 b.csv) > c.csv

这会将所有b.csv放在a.csv之后。

编辑 我添加了&lt;(tail +2 b.csv)。它将跳过b.csv 文件中的标题。

edit2

$ cat a.csv
hdr
a
b
c
$ cat b.csv
hdr
e
f
g

$ cat a.csv <(tail +2 b.csv)
hdr
a
b
c
e
f
g

IHTH

【讨论】:

它工作正常。但我不明白为什么+2?标题是一行,对吧? @AravindhKuppusamy :如果您想得到人们的回复,请务必包含他们的@nameNoSpaces 标签;-)。 +2 的意思是“从第二行开始”,对吧?祝你好运。【参考方案2】:

我想加入两个 CSV 文件,但下面的单行代码不起作用cat file1.csv &lt;(tail file2.csv) &gt; file.csv

奇怪的是,我不得不告诉 tail 跳过 0 行cat file1.csv &lt;(tail +0 file2.csv) &gt; file.csv

【讨论】:

【参考方案3】:

这是我的答案(忽略第一行并添加下一行)

 cat sample1.csv <(echo) <(tail +2 sample2.csv) > sample3.csv

【讨论】:

以上是关于如何从命令行合并两个 CSV 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MySQL 命令行导出 CSV 文件

如何通过命令行从多个文件夹中获取完整文件名到 csv

如何将多个csv按行合并?(不是首尾相接的按列合并)

如何从命令行将每两行合并为一行?

使用 python,我如何从 csv 中获取唯一行,但获取合并了哪些行(或行中的值)的记录?

从命令行导入 PostgreSQL CSV