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 sort
werden Sie feststellen, dass Sie mit (GNU) sort das Feld angeben können, nach dem sortiert werden soll. Versuchen Sie:
sort -n -t: -k4 -r
-n
bedeutet, numerisch statt lexikografisch zu sortieren.
-t:
:
gibt an, dass es zum Abgrenzen (Teilen) von Feldern verwendet werden soll .
-k4
weist ihn an, das vierte Feld zu verwenden.
-r
weist 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.