我有一个程序,其输出如下所示
# Status VAL1 VAL2 Description
1 some text 2.5 4.4 Some long other text
5 some text 2 14.5 2.0 Some long other text 2
12 some text 3 222.6 24.4 Some long other text 3
19 some text 4 3.4 1.5 Some long other text 4
21 some text 5 55.4 10.6 Some long other text 5
32 some text 6 2.9 9.4 Some long other text 6
我想沿着 VAL2 列排序。我尝试过,sort -k 4
但是当“状态”列中有空格时sort
会感到困惑。
有办法解决这个问题吗?也许传递字符编号而不是字段编号?
答案1
根据列偏移量排序:
sort -k1.27g
请注意,g
上面的标志(用于一般数字排序)不是标准的,因此您的排序实现可能不支持。
有了这个特定的数据样本,您就可以得到:
LC_ALL=C sort -k1.27
即进行字母数字排序并使用 C 语言环境来确保排序中不会忽略前导空格。因此,例如[ ]4.4
排序在之前,24.4
即使4
排序在之后2
。