是否有命令行实用程序可以转置 csv 文件?

是否有命令行实用程序可以转置 csv 文件?

给定一个像这样的文件

First,Last,Age
Cory,Klein,27
John Jacob,Smith,30

是否有命令行实用程序可以转置内容,使输出看起来像这样

First,Cory,John Jacob
Last,Klein,Smith
Age,27,30

答案1

https://stackoverflow.com/a/2776078:

$ apt-get install csvtool

然后转换

$ csvtool transpose input.csv > ouput.csv

或正在管道中

$ ... | csvtool transpose - | ...

答案2

仅使用 POSIX 工具不容易完成 CSV 解析,除非您使用不带引号的简化 CSV 变体(这样逗号就不会出现在字段中)。即便如此,使用awk其他文本处理工具来完成这项任务似乎并不容易。您可以将 Perl 与Text::CSV, Python 与csv, R 与read.csv, 红宝石与CSV,...(除 Perl 之外,所有这些都是各自语言标准库的一部分。)

例如,在Python中:

import csv, sys
rows = list(csv.reader(sys.stdin))
writer = csv.writer(sys.stdout)
for col in xrange(0, len(rows[0])):
    writer.writerow([row[col] for row in rows])

答案3

ruby -rcsv -e 'puts CSV.parse(STDIN).transpose.map &:to_csv' < in.csv > out.csv

答案4

假设 CSV 文件是简单的CSV 文件,意味着没有字段包含嵌入的分隔符或换行符,您可以使用GNU 数据混合:

datamash transpose --field-separator=',' < input.csv

相关内容