过去几天我一直在寻找一组命令行工具、perl 或 awk 脚本,它们可以让我非常快速地转置以下数据:
Row|Col|Val
1|A|foo
1|B|bar
1|C|I have a real
2|A|bad
2|C|hangover
进入这个:
A|B|C
foo|bar|I have a real
bad||hangover
请注意,每个“单元格”在数据集中只有一个值(即,与电子表格一样,行“1”列“A”没有任何重复)
我已经尝试过各种 awk shell 实现来转置数据 - 但似乎无法让它们工作。我的一个想法是将每个“Col”值剪切到一个单独的文件中,然后使用“join”命令行通过“Row”将它们重新组合在一起——但必须有一种更简单的方法。我确信这非常简单 - 但我有点挣扎。
我的输入文件有列 A 到 G(主要包括可变长度字符串)和 10,000 行。如果我可以避免将所有内容加载到内存中,那将是一个巨大的优势。
给任何有答案的人邮寄啤酒!
一如既往 - 非常感谢您的帮助。
干杯,
乔什
ps - 我有点惊讶,没有一个开箱即用的命令行工具来执行这种非常基本的枢轴/转置操作。我查看了http://code.google.com/p/openpivot/和http://code.google.com/p/crush-tools/两者似乎都需要聚合计算。