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)
考虑到你要做的事情,这应该是相当快的:
awk -F: '{ for (i=1; i<=NF; i++) print $i > i".out" }' file.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |