Command-Line

paste 命令將 csv 文件中的數據垂直逐行放置,而不是水平並排放置

  • September 7, 2022

我有幾個 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 寬。

我究竟做錯了什麼?

最有可能的是,您的原始文件有\r\n行尾。

如果是這樣,最終文件將\r在每個線段之間有一個額外的。嘗試使用tr

paste -d "," *csv | tr -d "\r" > output.csv

引用自:https://unix.stackexchange.com/questions/716473