按一列按字典顺序对多个分隔文件进行排序,按另一列按数字排序

use*_*157 4 awk text-processing sort columns text-formatting

我希望min_ex按第一列按字典顺序和第二列按数字对下面的 TSV 文件(称为 )进行排序。

A X, N    2.2
A, N    5.7
A, A    5.8
A, N    2.1
A, T    0.2
B G, M    2.3
B, L    0.1
B, I    0.2
B, M    9.3
B, C    9.9
Run Code Online (Sandbox Code Playgroud)

我尝试用 来做到这一点sort -k1,2 -n min_ex。但它不起作用,因为它会导致:

A, A    5.8
A, N    2.1
A, N    5.7
A, T    0.2
A X, N    2.2
B, C    9.9
B G, M    2.3
B, I    0.2
B, L    0.1
B, M    9.3
Run Code Online (Sandbox Code Playgroud)

还认为我也非常确定(通过实验)sort将任何空格作为分隔符,但我没有看到设置分隔符的选项。

我想要使​​用纯 AWK 或sed根本不使用(最好两者都单独使用)的解决方案,并且我希望尽可能保持 POSIX 兼容。

Ste*_*itt 5

sort -t$\'\\t\' -k1,1 -k2,2n\n
Run Code Online (Sandbox Code Playgroud)\n\n

做到了这一点,并且除了该部分之外,它\xe2\x80\x99s POSIX 兼容$\'\\t\'-t指定字段分隔符(而不是默认的空白到非空白转换);后缀n可以应用于单个字段定义。

\n