一个数据文件由多行数据组成。快速查看数据文件如下:
./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/