csv - 如何转置大文件

标签 csv ubuntu awk

我有一个包含 177 列和 54248 行的 CSV 文件,如下所示:

SNP_Name,Chr,Coordinate,R921B12,R921C12,R921D12,...

CL635944_160.1,0,0,CC,CC,CC,...
CR_594.1,0,0,TT,TT,TT,...
CR_816.1,0,0,CC,TT,TT,...

我需要一个包含 54284 列和 177 行的制表符分隔文件,如下所示:

R921B12 C C T T C C ...
R921C12 C C T T T T ...
R921D12 C C T T T T ...

以下命令允许我转置单列(数字 3)

awk  '{ printf( "%s ", $3); } END { printf( "\n" ); }' a.csv

但是我怎样才能为他们所有人做到这一点呢?

最佳答案

一次扫描输入文件一行,将包含行号、字段号和字段数据内容的每一行和字段写入临时文件。正如所写,临时文件将按行内的字段排序。对临时文件进行排序,使其按字段内的行排序,然后扫描临时文件并按所需顺序重建输出。

关于csv - 如何转置大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51382286/

相关文章:

python - 给定属性查找另一个属性的值

python - 如何获取行中的特定列(csv)

python - psycopg2 "NULL"来自 csv 的值用于 sql 插入

json - 如何解析 JSON 文件并将其转换为 CSV 文件?

php - 如何上传 csv 文件并回显 json_encode($csv)?

Linux - 以小时为单位的用户到期日期

c - 用于在 Linux 中创建库的 Makefile 无法编译

bash - 我无法在 docker bash 终端中执行 netcat 命令?

linux - 如何在awk中获取列名?

linux - 使用 bash 脚本比较两个文件并打印详细的差异报告