2010-10-05 33 views
8

Wenn ich folgende Zeilen auf der Basis der Werte links von '=' sortieren muss. Aber die Sortierung sollte die Auswahl nach "=" gleichzeitig auf die Spalte erweitern. Thtz ist, wir müssen Spalte nach ‚=‘ sortieren dnt ::Zeilen im "VI" -Editor sortieren

50599=1000000 
50454=00000054 
50080=00005464 
50098=00000875 
50661=00000665 
50788=10000035 
50988=10000006 
50994=10000656 
57009=00000005 
57022=10000008 
57040=10000005 
57000=10000005 
57060=10000089 
57067=10005640 
57102=00000765 
57190=00000867 

Dies muss in ‚VI‘ der Bearbeitung der Datei durchgeführt werden.

Ergebnis sollte ::

50080=00005464  
50098=00000875 ...etc. 

Antwort

15

Diese Antwort kommt 2 Jahre spät, aber vielleicht noch werden relevant, wählen Sie im visuellen Modus, um den Block Sie sortieren möchten, und führen Sie:

: Art

Dies sollte

21

Try sein:

:%!sort 

Es wird die ganze Zeile in alphabetischer Reihenfolge sortiert nach. Wenn Sie numerisch sortiert werden soll (dh die Zahl in der ersten Spalte unterschiedliche widt haben kann), dann versuchen:

:%!sort -n 

nicht über die = Sorgen Sie sich, es wird keine Zeile ändern, wird es nur ihre ändern Auftrag.

+5

Vim die Arbeit hat interner Sortierbefehl: ':% sort n' – Benoit

5

Sie können die folgenden sehen die sortierte Ausgabe tun:

:!sort % 

Erläuterung:

  • :: ex-Modus aufzurufen.
  • !: können Sie eine Shell Befehl ausführen.
  • %: der Name der Datei derzeit offen.

die Datei sortieren, indem sie zu ändern Sie seine Ausgabe in eine temporäre Datei umleiten und kopieren Sie ihren Inhalt in die ursprüngliche Datei zurück:

:!(sort %>/tmp/tmp;cp -f /tmp/tmp %) 
+0

Hmm, die Datei wurde beschädigt. Ich habe vergessen, dir etwas zu sagen: das ist eine XML-Datei, die einige Attribute enthält: – ErAB

Verwandte Themen