根據列的一部分對文件進行排序

根據列的一部分對文件進行排序

我有一個文件,其中包含資料儲存中的空間詳細資訊。我想根據其中的可用空間對其進行排序。

文件是:

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 -n -t: -k4 -r

-n意味著按數字排序而不是按字典順序排序。

-t:告訴它用於:分隔(分割)字段。

-k4告訴它使用第四個字段。

-r告訴它反轉結果。


:需要注意的是,當檔案名稱中有 a 時(這會移動欄位/列),此方法不起作用。如果這是一個要求,最簡單的方法是使用腳本(例如 perl 或 python)。

相關內容