【发布时间】:2012-09-12 03:52:40
【问题描述】:
假设这是我的文件:
$ cat file.txt
A:1:i
B:2:ii
X:9:iv
使用这样的 for 循环,我可以分别打印所有字段并重定向到子文件
$ for i in $(seq 1 3); do echo $i; awk -F ":" -v FL=$i '{print $FL}' file.txt > $i.out; done
这样:
$ cat 1.out
A
B
X
$ cat 2.out
1
2
9
$ cat 3.out
i
ii
iv
问题: 我必须在近 70 列和近 10 GB 的文件大小上执行此操作。它有效,但速度很慢。 任何人都可以建议一个更好/有效的拆分来处理这个大数据集。谢谢。
$ for i in $(seq 1 70); do echo $i; awk -F ":" -v FL=$i '{print $FL}' *.data > $i.out; done
【问题讨论】:
-
您是否仅限于 shell 脚本?
-
感谢 jedwards。连python都可以。
标签: shell unix command-line awk