一个数据文件由多个行数据组成。快速查看数据文件就像:
./gc_string/datadata.distr 10 1273377106 2
./gc_string/datadata.distr 10 -540812264 2
./gc_string/datadata.distr 10 318171673 2
./app_fib/datadata.distr 4 -1593911137 3
./app_fib/datadata.distr 4 -1345649758 3
./app_fib/datadata.distr 5 -1545930833 3
./app_fib/datadata.distr 5 1916879527 3
./app_fib/datadata.distr 5 609112984 3
./app_fib/datadata.distr 6 111417553 3
./app_fib/datadata.distr 6 -1545460791 3
.........
我想要做的是分组行数据,并根据第1列将它们写入每个不同的文件。如果1st具有相同的值,则规则是除第1列以外的所有列都写入同一文件。文件名基于第1列值。例如,将使用以上数据生成两个文件:
gc_string.txt
-------------------
10 1273377106 2
10 -540812264 2
10 318171673 2
app_fib.txt
-------------------
4 -1593911137 3
4 -1345649758 3
5 -1545930833 3
5 1916879527 3
..
我认为bash awk可以执行此任务。我尝试了几种但失败了。谁能给我提示? 谢谢
答案 0 :(得分:2)
awk '{split($1,a,"/"); print $2,$3,$4 > a[2] ".txt"}' datafile