Ich habe eine Datei mit zwei Spalten und einer n
Anzahl von Zeilen.
Spalte 1 enthält names
und Spalte2 age
.
Ich möchte den Inhalt dieser Datei in aufsteigender Reihenfolge nach age
(in der zweiten Spalte) sortieren .
Das Ergebnis sollte die name
der jüngsten Person zusammen mit name
und dann die zweitjüngste Person anzeigen und so weiter ...
Vorschläge für eine Einzeiler-Shell oder ein Bash-Skript.
Antworten:
Sie können den folgenden
sort
Befehl verwenden :Beispielsweise:
quelle
-h
anstelle von-n
durch Menschen lesbare Werte wie2G
oder3K
sowie durch Kommas getrennte Zahlen1,234.5
LC_ALL=C
, dass die traditionelle Sortierreihenfolge mit nativen Bytewerten abgerufen wird." (für String Match Case ohne-n
)sort -t$'\t' -k2 -n FILE
Lösung:
sort -k 2 -n filename
ausführlicher geschrieben als:
sort --key 2 --numeric-sort filename
Beispiel:
Erläuterung:
-k # - Dieses Argument gibt die erste Spalte an, die zum Sortieren verwendet wird. (Beachten Sie, dass die Spalte hier als durch Leerzeichen getrenntes Feld definiert ist. Das Argument
-k5
wird beginnend mit dem fünften Feld in jeder Zeile und nicht mit dem fünften Zeichen in jeder Zeile sortiert. )-n - Diese Option gibt eine "numerische Sortierung" an, was bedeutet, dass die Spalte als Zahlenreihe anstelle von Text interpretiert werden soll.
Mehr:
Andere gängige Optionen sind:
Es gibt andere Optionen, aber dies sind die häufigsten und hilfreichsten, die ich häufig verwende.
quelle
-t
war realer Lebensretter !! Wenn Ihre Spalten Leerzeichen haben und sich die Spalten durch ein bestimmtes Zeichen wie,
oder eine Registerkarte unterscheidenFür tabulatorgetrennte Werte kann der folgende Code verwendet werden
-r kann verwendet werden, um Daten in absteigender Reihenfolge abzurufen.
-n für die numerische Sortierung
-k, --key = POS1 [, POS2] wobei k die Spalte in der Datei ist.
In absteigender Reihenfolge ist der Code unten
quelle
Verwenden Sie
sort
.quelle