一个数据文件由多行数据组成。快速查看数据文件如下:

./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
.........

我要做的是将行数据分组,并根据第一列将它们写入每个不同的文件。规则是,如果第一列具有相同的值,则除第一列外的所有列都将写入同一文件。文件名基于第一列值。例如,将用上述数据生成两个文件:
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可以执行这个任务。我试了好几种方法,但都失败了。有人能给我小费吗?
谢谢

最佳答案

awk '{split($1,a,"/"); print $2,$3,$4 > a[2] ".txt"}' datafile

关于linux - 如何编写awk命令以将行数据分组并转储到文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23024716/

10-09 13:27