寻找有效的文件分割

Jad*_*kia 1 unix shell awk command-line

假设这是我的文件:

$ cat file.txt 
A:1:i
B:2:ii
X:9:iv
Run Code Online (Sandbox Code Playgroud)

使用这样的for循环,我可以单独打印所有字段并重定向到子文件

$ for i in $(seq 1 3); do echo $i; awk -F ":" -v FL=$i '{print $FL}' file.txt > $i.out; done
Run Code Online (Sandbox Code Playgroud)

以便:

$ cat 1.out 
A
B
X

$ cat 2.out 
1
2
9

$ cat 3.out 
i
ii
iv
Run Code Online (Sandbox Code Playgroud)

问题:我必须在近70列上执行此操作,文件大小接近10 GB.它有效但速度慢.任何人都可以建议更好/更有效的拆分来处理这个大数据集.谢谢.

$ for i in $(seq 1 70); do echo $i; awk -F ":" -v FL=$i '{print $FL}' *.data > $i.out; done
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 6

考虑到你要做的事情,这应该是相当快的:

awk -F: '{ for (i=1; i<=NF; i++) print $i > i".out" }' file.txt
Run Code Online (Sandbox Code Playgroud)