Wie kann ich eine Textdatei in Notepad ++ nach Zeilenlänge sortieren? Gibt es ein Plugin für die genannte Aufgabe?
Falls es kein Plugin gibt, Was ist das erste und vielleicht das zweite Tutorial, das gelesen werden muss, um das Plugin selbst zu schreiben?
13
Antworten:
Diese Antwort wurde von einem YouTube-Video inspiriert . Aktualisiert, um die ursprüngliche Sortierreihenfolge beizubehalten, falls dies wichtig ist.
Notepad ++ verfügt über ein integriertes TextFX-Tool, mit dem ausgewählte Zeilen alphabetisch sortiert werden. Mit diesem Werkzeug können Sie nach der Länge der Zeilen sortieren, indem Sie links von jeder Zeile Leerzeichen einfügen und sicherstellen, dass alle Zeilen gleich lang sind.
"The Zoo" steht alphabetisch vor "Their House", da der Raum als Zeichen behandelt wird und vor "i" steht.
__X
(so zu tun, als wären die Unterstriche wirklich Leerzeichen) wird in ähnlicher Weise alphabetisch vor kommen_XX
. Die Idee in dieser Antwort ist, Leerzeichen und Zeilennummern hinzuzufügen,__________092dog
damit sie oben sortiert werden_003alligator
.Als Beispieldaten verwende ich:
Schritt 1. Fügen Sie Zeilennummern hinzu.
(Anmerkung hinzugefügt von barlop - eine Anmerkung für den Leser zu diesem Schritt, wir werden nicht nach diesen Zeilennummern sortieren, wir sortieren nach der Länge der Zeilen. Aber der Grund für das Hinzufügen der Zeilennummern ist der gleiche wie wir.) kennen die natürliche Reihenfolge, so dass, wenn zum Beispiel zwei + Zeilen gleich lang sind, wir diese Zeilen nach dieser natürlichen Reihenfolge sortieren können)
Angenommen, Ihre Textdatei enthält nur die Daten, platzieren Sie den Textcursor (die vertikale Linie) an der allerersten Position der Datei. Wählen Sie dann im
Edit
MenüColumn Editor...
( Alt+ C). Wählen Sie "Number to Insert" und beginnen Sie mit 1, erhöhen Sie um 1 und geben Sie führende Nullen ein. Beachten Sie, dass die ursprüngliche Reihenfolge beim Sortieren von der kürzesten zur längsten Zeichenfolge beibehalten wird. Kehren Sie zuerst alle Zeilen um, wenn Sie am längsten bis zum kürzesten sortieren möchten.Schritt 2. Füllen Sie alle Zeilen mit führenden Leerzeichen auf.
Setzen Sie den Textcursor (die vertikale Linie) an die allererste Position der Datei. Wählen Sie dann im
Edit
MenüColumn Editor...
( Alt+ C). Fügen Sie genügend Leerzeichen ein, damit die kürzeste Datenzeile auf die Länge der längsten Datenzeile aufgefüllt wird. Wenn Ihre kürzeste Zeile 4 Zeichen und Ihre längste 44 Zeichen hat, stellen Sie sicher, dass Sie mindestens 40 Leerzeichen einfügen.Schritt 3. Schneiden Sie die Linien auf eine einheitliche Länge.
Verwenden Sie das folgende Suchen / Ersetzen ( Ctrl+ H) für reguläre Ausdrücke , um die Zeichen der rechten Hand abzugleichen, die der Länge Ihrer längsten Datenzeile entsprechen oder diese überschreiten.
Ersetzen Sie alle durch
$1
. Dadurch wird alles außer den 50 am weitesten rechts stehenden Zeichen jeder Zeile abgeschnitten. Wenn Ihre Daten länger (oder kürzer) als 50 sind, passen Sie das{50}
im regulären Ausdruck an.(Anmerkung von Barlop hinzugefügt - die Idee hier ist, dass die kürzesten Linien am Anfang die meisten Leerzeichen haben. )
Schritt 4. Sortieren Sie die Zeilen.
Markieren Sie den gesamten Text ( Ctrl+ A). Gehen Sie über das TextFX-Menü zu
Text FX > TextFX Tools > Sort lines case sensitive (at column)
. Ihre Daten sollten nun in der Reihenfolge ihrer Länge vorliegen, von der kürzesten bis zur längsten. Wenn Sie möchten, dass sie in der Reihenfolge vom längsten zum kürzesten sind, deaktivieren Sie dieText FX > TextFX Tools > + Sort ascending
Option vor dem Sortieren. Beachten Sie, wie die Zeilennummern ebenfalls vertauscht werden.Schritt 5. Entfernen Sie führende Leerzeichen.
Verwenden Sie ein anderes Suchen / Ersetzen ( Ctrl+ H) für reguläre Ausdrücke , um die führenden Leerzeichen abzugleichen.
Das ist ein Leerzeichen zwischen dem Caret und dem Sternchen. Ersetze alles durch nichts. Das wird alle führenden Leerzeichen und die eingefügten Zeilennummern entfernen, wenn Sie 4-stellige Zeilennummern hatten. Ersetzen Sie die
{4}
durch die richtige Anzahl von Ziffern in Ihren Zeilennummern.MAKRO
Ich habe die obigen Schritte mit der Makrofunktion von Notepad ++ aufgezeichnet und sie funktioniert nicht. Ich bin nicht sicher, welcher Schritt fehlschlägt, aber ich habe nicht diagnostiziert, warum. Sie könnten wahrscheinlich AutoHotKey verwenden, um dies zu automatisieren, wenn Sie es wiederholt tun.
quelle
^ *\d{5}
oder eine beliebige Anzahl von Ziffern für die Zeilennummern.Nein, ich glaube nicht. Das nächste ist das TextFx-Plugin, aber das ist eine zeichenbasierte Sortierung, nicht zeilenlängenbasiert. Am besten werfen Sie den Text in eine Tabelle und sortieren ihn dort (mithilfe der
LEN()
Funktion in einer separaten berechneten Spalte ).quelle
Sie können SQL in N ++ in CSV-Dateien verwenden! Zum Beispiel, wenn Sie:
können Sie den Befehl ausführen
select * from data order by length(col1) desc
, um absteigend zu sortieren. "Daten" bedeutet aktuelle Datei. "col1" - Name der ersten (und letzten) Spalte.Leider gibt es wahrscheinlich einen Fehler, der es nicht erlaubt, Trennzeichen nach Zeilen in einspaltigem Text zu setzen.
quelle
Oder wenn Sie zufällig Linux und nedit haben:
quelle