Ich weiß, dass ich in vim eine Datei mit einem regulären Ausdruck sortieren kann, um anzugeben, welche Teile jeder Zeile ich beim Sortieren berücksichtigen soll:
%Vor%Ist es möglich, mehr als einen Ausdruck zu kombinieren?
Hier haben Sie ein Beispiel:
EINGABE:
%Vor%: sort '[a-z]' r
%Vor%sort '[0-9]' r
%Vor%ERWARTET (vielleicht etwas "wie": sort '[A-Z] | [0-9]' r?):
%Vor%Bitte beachten Sie, dass eine bloße "Sortierung" nicht funktioniert, da "a" und "b" die Ziffernfolge
unterbrechen %Vor%Eine Alternative außerhalb von VIM wird ebenfalls akzeptiert, aber aus Neugierde würde ich gerne wissen, ob es tatsächlich möglich ist, dies innerhalb von VIM zu tun (und wenn es so ist, wie; -)
Vielen Dank, Grüße
Angenommen, Sie haben eine externe Sortierung verfügbar, sollte Folgendes funktionieren:
%Vor%BEARBEITEN: Erklärung:
-k
wird verwendet, um Sortierschlüssel anzugeben. -k1,1
bedeutet, dass die Sortierung nach key1
beginnt und endet mit key1
. -k3,3n
bedeutet, dass die Sortierung nach key3
beginnt und endet mit key3
; n
gibt hier eine numerische Sortierung an, d. h. Vergleich gemäß dem numerischen Zahlenwert.
Standardmäßig geht sort von leerer zu nicht leerem Übergang als Feldtrennzeichen aus. Daher würde die Zeile bar b 1
aus drei Feldern bestehen. Wenn die Werte durch ein anderes Zeichen als das Leerzeichen begrenzt würden, sagen wir :
, würden Sie das Feldtrennzeichen angeben, indem Sie -t:
hinzufügen.
Es gibt einen Fehler in dem, was Sie verlangen ... Wenn Sie nach dem ersten Wort UND der Nummer sortieren wollen, müssen Sie irgendwie die Rangfolge angeben. Mit anderen Worten, möchten Sie, dass die sortierte Liste wie folgt aussieht:
%Vor%oder, das:
%Vor%Offensichtlich ist die Antwort die erste. Aber du musst es vim sagen! Daher kann ich mir keinen (vernünftigen) Weg vorstellen, dies in einem Befehl zu tun ... Aber ich kann es in zwei tun:
%Vor%Indem Sie die Befehle in dieser Reihenfolge ausführen, geben Sie an, dass das erste Wort Vorrang vor der Nummer hat.