Datei nach einem Teil einer Spalte sortieren

Datei nach einem Teil einer Spalte sortieren

Ich habe eine Datei, die Angaben zum Speicherplatz in Datenspeichern enthält. Ich möchte sie nach dem darin verfügbaren freien Speicherplatz sortieren.

Die Datei ist:

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

Die Ausgabe sollte wie folgt aussehen:

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

Ich habe versucht, sed und awk zu verwenden, konnte aber keine überzeugende Lösung finden. Bitte helfen Sie.

Antwort1

Wenn Sie sich das ansehen, man sortwerden Sie feststellen, dass Sie mit (GNU) sort das Feld angeben können, nach dem sortiert werden soll. Versuchen Sie:

sort -n -t: -k4 -r

-nbedeutet, numerisch statt lexikografisch zu sortieren.

-t::gibt an, dass es zum Abgrenzen (Teilen) von Feldern verwendet werden soll .

-k4weist ihn an, das vierte Feld zu verwenden.

-rweist es an, das Ergebnis umzukehren.


Dies funktioniert jedoch nicht, wenn Sie ein :im Dateinamen haben (wodurch die Felder/Spalten verschoben werden). Wenn dies erforderlich ist, wäre ein Skript (z. B. Perl oder Python) die einfachste Lösung.

verwandte Informationen