如何将awk命令写入组行数据并转储到文件

时间:2014-04-12 00:42:42

标签: linux bash awk data-processing

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

./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可以执行此任务。我尝试了几种但失败了。谁能给我提示? 谢谢

1 个答案:

答案 0 :(得分:2)

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