5 Stimmen

Wie kann man den Inhalt einer Datei direkt nach einer Spalte sortieren?

Ich habe eine Datei mit mehreren Spalten, die durch Leerzeichen getrennt sind. z.B.:

data1             data2          data3                data4
val1              val2            val3                  val4 

Ich muss die Datei auf der Grundlage von Werten in verschiedenen Spalten sortieren, d.h. manchmal auf der Grundlage des Wertes von Spalte 1, manchmal auf der Grundlage des Wertes von Spalte 2 usw.

Ich dachte an den Befehl sort, konnte aber nicht herausfinden, wie ich ihn dazu verwenden kann.

Vielen Dank,

10voto

Matthew Flaschen Punkte 266507

Es ist ganz einfach, wenn man es aufgibt, an Ort und Stelle zu sortieren:

sort -k 1 original > by_col_1
sort -k 2 original > by_col_2

2voto

unwind Punkte 377331

Sort hat ein eingebautes Verständnis von "Schlüsseln", d.h. dem Teil der Zeile, der für den Vergleich verwendet wird. Standardmäßig ist der Schlüssel die gesamte Zeile, aber das kann mit der Option -k Option:

Beispiel: Um nach dem zweiten Feld zu sortieren, verwenden Sie --key=2,2' ( -k 2,2').

Standardmäßig werden die Tasten durch den Übergang zwischen nicht-leeren und leeren Zeichen getrennt.

0voto

kenorb Punkte 134883

Um Dateien an Ort und Stelle zu sortieren, versuchen Sie vim-way:

$ ex -s +'%!sort -k1' -cxa file.txt

Alternativ können Sie auch -o Parameter wie sort -k1 in.txt -o out.txt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X