列の一部に基づいてファイルを並べ替える

列の一部に基づいてファイルを並べ替える

データ ストア内のスペースの詳細を含むファイルが 1 つあります。それを、データ ストア内の使用可能な空きスペースに従って並べ替えたいと考えています。

ファイルは次の通りです:

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::フィールドを区切る (分割する) ために使用するように指示します。

-k44 番目のフィールドを使用するように指示します。

-r結果を反転するように指示します。


ただし、ファイル名にが含まれている場合は機能しないという注意点があります:(フィールド/列がシフトします)。これが要件である場合、最も簡単な方法はスクリプト (例: perl または python) を使用することです。

関連情報