我希望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
我尝试用 来做到这一点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
我还认为我也非常确定(通过实验)sort
将任何空格作为分隔符,但我没有看到设置分隔符的选项。
我想要使用纯 AWK 或sed
根本不使用(最好两者都单独使用)的解决方案,并且我希望尽可能保持 POSIX 兼容。
答案1
sort -t$'\t' -k1,1 -k2,2n
就成功了,它是符合 POSIX 标准除了$'\t'
部分。-t
指定字段分隔符(而不是默认的空白到非空白转换);后缀n
可以应用于单个字段定义。