根据列的一部分对文件进行排序

根据列的一部分对文件进行排序

我有一个文件,其中包含数据存储中空间的详细信息。我想根据其中的可用空间对其进行排序。

文件是:

Name:VSP-01-32     Capacity:2047   Free Space:144
Name:VSP-02-33     Capacity:2047   Free Space:333
Name:VSP-03-34     Capacity:2047   Free Space:163
Name:VSP-04-35     Capacity:2047   Free Space:110
Name:VSP-05-36     Capacity:2047   Free Space:256
Name:VSP-06-37     Capacity:2047   Free Space:417

输出应如下所示:

Name:VSP-06-37     Capacity:2047   Free Space:417
Name:VSP-02-33     Capacity:2047   Free Space:333
Name:VSP-05-36     Capacity:2047   Free Space:256
Name:VSP-03-34     Capacity:2047   Free Space:163
Name:VSP-01-32     Capacity:2047   Free Space:144
Name:VSP-04-35     Capacity:2047   Free Space:110

我尝试使用 sed 和 awk,但找不到令人信服的解决方案。请帮忙。

答案1

如果你看一下,man sort你会发现 (GNU) sort 允许你指定要排序的字段。尝试:

sort -n -t: -k4 -r

-n表示按数字排序而不是按字典顺序排序。

-t:告诉它如何使用:来分隔(拆分)字段。

-k4告诉它使用第四个字段。

-r告诉它反转结果。


这种方法有一个缺点,就是当文件名中包含 时,这种方法不起作用:(这将移动字段/列)。如果这是必需的,最简单的方法是使用脚本(例如 perl 或 python)。

相关内容