Linux

如何合併 CSV 文件

  • January 22, 2017

我有 CSV 文件,格式如下:

1.csv
1,2,3,4,5,6,7,8
2.csv
2,4,5,7,8,8,9,5
3.csv
2,3,4,5,6,7,8,9

…..

高達18.csv.

我希望結果result.csv是:

1,2,3,4,5,6,7,8,2,4,5,7,8,8,9,5,2,3,4,5,6,7,8,9

我試過cat了,但它只是在之後才附加。我還想轉置 CSV 以便1.csv轉換為:

1
2
3
4
5
6
7
8

我得到了 result.csv 文件:

for i in {1..18}; do paste $i.csv; done | paste -s > result.csv

或與貓:

for i in {1..18}; do cat $i.csv; done | paste -s > result.csv

(將所有內容與 paste/cat 放在一起,然後將輸出格式化為-s一行。)

避免循環:

cat {1..18}.csv | paste -s > result.csv

轉置 1.csv:

sed 's/,/\n/g' 1.csv

(只需通過輸入轉換逗號)

第 1 部分:

paste -d, {1..18}.csv 

對於通用轉置使用 datamash:

cat {1..3}.csv | datamash -t, transpose
1,2,2
2,4,3
3,5,4
4,7,5
5,8,6
6,8,7
7,9,8
8,5,9

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