Sortieren nach Spalte

Sortieren nach Spalte
10 awhdk;
14 hjoeow;
2  kdkld;
4  jkjdksl

Wie sortiert man dies basierend auf Spalte eins (also der Anzahl)?

Ich möchte diese Ausgabe erhalten:

14 hjoeow;10 awhdk;4 jkjdksl;2 kdkld

Ich muss beide Spalten basierend auf der Sortierung der ersten Spalte ausdrucken.

Antwort1

Mit können Sie -kfestlegen, wo in der Eingabezeile der Sortierschlüssel beginnt und endet.

Mit der -nOption oder fügen Sie nder Sortierschlüsselspezifikation hinzu, um standardmäßig eine numerische Sortierung statt einer lexikalischen Sortierung auszulösen. Und -rum die Sortierung umzukehren.

Hier müssen Sie bei einer numerischen Sortierung den Sortierschlüssel nicht auf den Sortierbefehl beschränken. Wenn Sie dies tun:

sort -rn file

Dabei wird die ganze Zeile als Zahl behandelt. Die 14 hjoeow;Zeile wird beispielsweise als 14Zahl verstanden.

Du könntest es tun:

sort -bk 1,1rn file

Nur nach dem ersten Feld sortieren, aber das würde keinen Unterschied machen.

Der Befehl zum Verbinden von Zeilen ist pastemit der -sOption. Sie können das Trennzeichen mit angeben -d. \0 ist ein spezieller Wert für das Trennzeichen, der bedeutetverbinden, ohne dass etwas dazwischen istSo erhalten Sie das erwartete Ergebnis:

sort -rn file | paste -sd '\0' -

POSIX pasteerfordert die Übergabe eines Dateinamens. -ist wiederum ein spezieller Wert, der bedeutetStandardeingabepaste. Bei einigen Implementierungen können Sie es weglassen .

verwandte Informationen