我有一个文件,其中包含数据存储中空间的详细信息。我想根据其中的可用空间对其进行排序。
文件是:
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)。