我有 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
答案1
我得到了 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
(只需通过回车转换逗号即可)
答案2
部分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