按列Linux在文件中排序

时间:2013-04-08 17:03:03

标签: linux file unix sorting

所以我在这里看到了许多问题,我希望有人可以清理我自己的问题。我有一个看起来像这样的文件:

data    dd  0.0 96  157 KL  71  X   6947
data    fb  0.0 11  3R2 HD  13  1   1850
data    bx  0.0 14  352 FG  12  X   4810
data    bh  0.0 13  3GF FH  1T  1   6840
data    fb  0.0 11  3R2 HD  13  1   1325
etc.

我想按第8行和第9行对文件进行排序,以便输出为:

data    bx  0.0 14  352 FG  12  X   4810
data    dd  0.0 96  157 KL  71  X   6947
data    fb  0.0 11  3R2 HD  13  1   1325
data    fb  0.0 11  3R2 HD  13  1   1850
data    bh  0.0 13  3GF FH  1T  1   6840
etc.

我试过了

sort -n -k7 -k8 file> newfile中

但是这只是对它进行了分类:

data    dd  0.0 96  157 KL  71  X   6947
data    bx  0.0 14  352 FG  12  X   4810
data    fb  0.0 11  3R2 HD  13  1   1850
data    bh  0.0 13  3GF FH  1T  1   6840
data    fb  0.0 11  3R2 HD  13  1   1325
etc. 

所以我试过了:

> sort -n -k8 -k9 file > newfile

但这只会让情况变得更糟

data    dd  0.0 96  157 ZL  71  P   69412217
data    fb  0.0 11  3R2 HX  13  1   185135150
data    bx  0.0 14  352 FG  12  X   4810
data    bh  0.0 13  3GF FH  1T  1   6840
data    fb  0.0 11  3R2 HY  13  L   132321355
etc.

我也尝试过:

  

sort -n -k8,9 file> newfile中

但这似乎并不可靠,因为它可以连续正确地做几次,但随后又扔了一些随便的人:

data    dd  0.0 96  157 KL  71  X   6947
data    bx  0.0 14  352 FG  12  26  443810
data    fb  0.0 11  3R2 HD  13  1   1850
data    bh  0.0 13  3GF FH  1T  1   6840
data    bx  0.0 14  352 FG  12  2   465310
data    fb  0.0 11  3R2 HD  13  1   1325
etc. 

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

这个怎么样:

[cnicutar@ariel ~]$ sort -n -k8,8 -k9,9  tos

data    bx  0.0 14  352 FG  12  X   4810
data    dd  0.0 96  157 KL  71  X   6947
data    fb  0.0 11  3R2 HD  13  1   1325
data    fb  0.0 11  3R2 HD  13  1   1850
data    bh  0.0 13  3GF FH  1T  1   6840

这指定第八个字段为主键,第9个字段为辅助字段。