Numerische Sortierung und Feldtrennzeichen
In vielen realen Szenarien müssen Sie möglicherweise Dateien sortieren, die numerische Werte oder Daten mit mehreren Feldern enthalten. Der sort-Befehl bietet Optionen für diese Szenarien.
Numerisches Sortieren
Erstellen wir eine Datei mit numerischen Werten, um das numerische Sortieren zu untersuchen:
- Erstellen Sie eine Datei mit dem Namen
numbers.txt:
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
- Zeigen Sie den Dateiinhalt an:
cat numbers.txt
Sie sollten sehen:
10
5
100
20
1
50
- Wenn Sie den grundlegenden
sort-Befehl auf diese Datei anwenden:
sort numbers.txt
Die Ausgabe wird sein:
1
10
100
20
5
50
Beachten Sie, dass dies nicht in der richtigen numerischen Reihenfolge ist, da sort standardmäßig jede Zeile als Text behandelt. Die Zeichenkette "100" kommt in lexikographischer (Wörterbuch-)Reihenfolge vor "20".
- Um numerisch zu sortieren, verwenden Sie die Option
-n:
sort -n numbers.txt
Jetzt sehen Sie die korrekte numerische Reihenfolge:
1
5
10
20
50
100
Sortieren von Dateien mit mehreren Feldern
Oft enthalten Dateien mehrere Felder, die durch Trennzeichen wie Kommas, Tabulatoren oder Leerzeichen getrennt sind. Der sort-Befehl ermöglicht es Ihnen, anzugeben, nach welchem Feld sortiert werden soll.
- Erstellen Sie eine CSV-Datei (Comma-Separated Values, Komma-separierte Werte) mit einigen Beispieldaten:
cd ~/project
echo -e "Name,Age,City\nAlice,28,New York\nBob,35,Los Angeles\nCarol,22,Chicago\nDavid,31,Boston\nEve,26,Seattle" > people.csv
- Zeigen Sie den Dateiinhalt an:
cat people.csv
Sie sollten sehen:
Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Carol,22,Chicago
David,31,Boston
Eve,26,Seattle
- Um diese Datei nach dem zweiten Feld (Alter) zu sortieren, verwenden Sie die Option
-t, um das Feldtrennzeichen (in diesem Fall Komma) anzugeben, und die Option -k, um die Feldnummer anzugeben:
sort -t, -k2,2n people.csv
Die Option -t, setzt das Feldtrennzeichen auf Komma, und -k2,2n teilt sort mit, das zweite Feld für das Sortieren zu verwenden und es als numerischen Wert zu behandeln.
Die Ausgabe sollte sein:
Name,Age,City
Carol,22,Chicago
Eve,26,Seattle
Alice,28,New York
David,31,Boston
Bob,35,Los Angeles
- Sie können auch nach dem dritten Feld (Stadt) alphabetisch sortieren:
sort -t, -k3,3 people.csv
Die Ausgabe wird sein:
Name,Age,City
David,31,Boston
Carol,22,Chicago
Bob,35,Los Angeles
Alice,28,New York
Eve,26,Seattle
Durch die Verwendung dieser Optionen können Sie Dateien mit verschiedenen Datenformaten effektiv nach Ihren Bedürfnissen sortieren.