![粘贴命令将 csv 文件中的数据垂直逐行放置,而不是水平彼此相邻](https://linux22.com/image/210434/%E7%B2%98%E8%B4%B4%E5%91%BD%E4%BB%A4%E5%B0%86%20csv%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E5%9E%82%E7%9B%B4%E9%80%90%E8%A1%8C%E6%94%BE%E7%BD%AE%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E6%B0%B4%E5%B9%B3%E5%BD%BC%E6%AD%A4%E7%9B%B8%E9%82%BB.png)
我有一些 csv-s,每个包含 3 列,用“,”分隔。例子:
header1,header2,header3
value1,value2,value3
value1,value2,value3
...
使用本教程,我想如果我执行的话,paste -d "," *csv > output.csv
我最终会得到这样的结果:
header1,header2,header3,header1,header2,header3,...
value1,value2,value3,value1,value2,value3,...
value1,value2,value3,value1,value2,value3,...
但输出看起来像这样:
header1,header2,header3,
header1,header2,header3,
header1,header2,header3,
...
value1,value2,value3,
value1,value2,value3,
...
特别是每行是 3 列宽,而不是 csv 文件的数量 * 3 宽。
我究竟做错了什么?
答案1
最有可能的是,您的原始文件有\r\n
行尾。
如果是这样,最终文件的\r
每个线段之间都会有一个额外的内容。尝试使用tr
:
paste -d "," *csv | tr -d "\r" > output.csv