【发布时间】:2018-03-28 03:51:05
【问题描述】:
我有一个 2TB 的文本表格文件,由制表符分隔,一列进一步由“;”分隔。是的,它实际上是一个非常大的 vcf 文件。
使用制表符分隔符,我们有 8 列,并使用“;”分隔符,我们可以将第 8 列拆分为另外 12 列。
为了便于统计分析,我需要将文件拆分为 19 个文件,每个文件包含一列。最好我可以只浏览一次文件(因为文件很大,我有 100 个大文件,IO 成本非常高),然后将 19 列写入 19 个单独的文件。
基本上,我已经以一种有效的方式解决了这个问题
剪切 1-2 file.txt > column12.txt
但是要得到这19列,我需要遍历文件19次,效率不高。
我想知道是否有一种有效的方法可以遍历文件一次并将其写入 19 个文件?
非常感谢您的帮助。
文件示例如下
a b c d e f g;h;i;j;k
m n o p q l x;y;z;o;p
a b c d e f g;h;i;j;k
a b c d e f g;h;i;j;k
那么我想要文件包含
a
m
a
a
【问题讨论】:
-
StackOverflow 不是免费的编码服务。所以希望你try to solve your own problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
使用
awk应该很容易做到这一点。print $1 >> file1; print $2 >> file2; ... -
始终在您的帖子中向我们展示示例并将它们也包装在代码标签中,以便我们轻松理解您的问题。
-
感谢使用 awk 的唯一问题是它如何处理两个分隔符,如“tab”和“;”?
-
感谢 James,您是如何做到让示例表像我编辑时一样的技巧?
标签: bash