按列2的子字符串排序,然后按列1 bash排序

时间:2015-10-23 02:11:11

标签: bash shell

我的文件如下:

0.3 test_a1
0.2 test_a1
0.4 test_a1
0.1 test_a21
0.9 test_a21
0.5 test_a21
0.3 test_b99
0.2 test_b99

每个组都是第2列,末尾没有数字(在上面的示例中,两个组是test_a和test_b)。我想按组排序然后按第1列排序,所以正确的结果是:

0.1 test_a21
0.2 test_a1
0.3 test_a1
0.4 test_a1
0.5 test_a21
0.9 test_a21
0.2 test_b99
0.3 test_b99

以下命令给出了错误的结果:

sort -t' ' -k2,2 -k1 file.txt

0.2 test_a1
0.3 test_a1
0.4 test_a1
0.1 test_a21
0.5 test_a21
0.9 test_a21
0.2 test_b99
0.3 test_b99

如何才能获得正确的结果?

1 个答案:

答案 0 :(得分:0)

sort -k2,2.7

结果

0.1 test_a21
0.2 test_a1
0.3 test_a1
0.4 test_a1
0.5 test_a21
0.9 test_a21
0.2 test_b99
0.3 test_b99