对对齐的列进行排序

对对齐的列进行排序

我有一个程序,其输出如下所示

 #         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

相关内容