使用粘贴命令删除合并的 csv 文件之间的 \r

使用粘贴命令删除合并的 csv 文件之间的 \r

我用这样的命令合并了 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

相关内容