我用这样的命令合并了 3 个 csv 文件。
paste -d "," a.csv b.csv c.csv > result.csv
生成的 csv 在每行的 b.csv 和 c.csv 列之间有一个意外的换行符,如下所示:
col-a1, col-a2, col-b1, col-b2, col-b3
,col-c1, col-c2 ...
b.csv 最初是 tsv 并使用如下命令转换为 csv:
cut -f3-5 b.tsv | tr "\t" "," > b.csv
其中原始 b.tsv 的第 5 个字段是一行中的最后一个字段。
为什么 \r 在那里?
鉴于此,我必须使用粘贴命令,如何删除换行符以使 3 个 csv 的所有列都在一行中?
更新:为了响应下面的评论,该命令的输出
LC_ALL=C sed -n 'l;2q' result.csv
是这样的:
col-a1, col-a2, col-b1, col-b2, col-b3\r,col-c1, col-c2$
...
答案1
感谢 Stéphane Chazelas 在评论中给出的提示。
终于我得到了答案。为了删除\r
,将 tsv 转换为 csv 的命令应该是:
cut -f3-5 b.tsv | tr "\t" "," | tr -d "\r" > b.csv