Sortieren Sie nach durch Kommas getrennten Wörtern


11

Normaler Befehl: Sortieren kann Zeilen nach Spalte oder virtueller Spalte ( \%coder \%v) sortieren. Kann die übergeordnete logische Spalte als Sortierschlüssel verwendet werden? Die Verwendung von regulären Ausdrücken sieht für dieses Szenario etwas komplex aus (die Spalte befindet sich am Ende der Zeile?) Und sieht ähnlich aus wie das Sortierdienstprogramm ( sork -k), aber das Sortieren mit dieser Funktionalität ist unter Windows nicht verfügbar. Das Vim-Plug-In hilft ebenfalls.

Zum Beispiel möchte ich die 2 Zeilen unten nach der letzten durch Komma getrennten Spalte sortieren. Mein reales Szenario hat viel mehr Spalten und Zeichenfolgenmuster. Das Angeben eines Spaltenbegrenzers vereinfacht dies erheblich.

xxx,yyy,zzz,0x123
zzxz,xxxx,yyyy,0x121

Antworten:


11

Mit der Sortierung von Vim können Sie entweder überspringen {pattern}oder nur (mit der rFlagge) berücksichtigen . Ein regulärer Ausdruck für die letzte durch Kommas getrennte Spalte ist einfach zu formulieren: Überspringen Sie alles bis einschließlich des letzten Kommas in einer Zeile:

:sort/.*,/

Für jede andere Spalte würde ich das rFlag verwenden und N (hier :) 2vorherige Spalten überspringen über \zs:

:sort/\([^,]*,\)\{2}\zs[^,]*/

1
Da die letzte Spalte zufällig eine Hex-Zahl ist, kann die Verwendung des xFlags ebenfalls hilfreich sein.
Jecxjo

Das sieht gut aus. Die letzte Spalte kann ein Sonderfall sein. Irgendeine einfache Darstellung für die mittleren Spalten?
Thomson

Ich dachte, Sie könnten sich etwas dafür einfallen lassen, aber hier sind Sie. Bitte akzeptieren Sie meine (bearbeitete) Antwort, indem Sie auf das nebenstehende Häkchen klicken. Vielen Dank!
Ingo Karkat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.