Gibt es eine Möglichkeit in Notepad ++, jede zweite oder n-te Zeile zu löschen? Ich habe eine riesige Datenliste und muss die Größe reduzieren.
Die Daten selbst sind nicht so wichtig und von einer Liste mit 10.000 Artikeln brauche ich nur eine Auswahl von 5.000
Ich denke, dass es eine seltsame Idee ist, Notepad ++ zu verwenden, aber ich mag eine Herausforderung, also entschied ich mich, es zu drehen.
Öffnen Sie das Menü "Ersetzen", geben Sie ([^\n]*\n)[^\n]*\n
in das Feld "Suchen nach" und $1
in das Feld "Ersetzen durch" ein. Wählen Sie dann reguläre Ausdrücke für den Suchmodus aus, klicken Sie auf Alle ersetzen, und jede zweite Zeile wird gelöscht.
Sie können ähnliche Ausdrücke erstellen, wenn Sie etwas Ähnliches tun möchten. Zum Beispiel ersetzt (([^\n]*\n){a})[^\n]*\n
jede n-te Zeile, wenn Sie a
durch n-1 ersetzen, und [^\n]*\n([^\n]*\n)
es Ihnen erlaubt, gerade Zeilen anstelle von ungeraden Zeilen zu behalten.
(Das war überhaupt nicht schwer - ich musste nur meine veraltete Notepad ++ - Installation aktualisieren.)
Sie können versuchen, ein Makro zu verwenden.
Ich denke, Sie können dies mit awk tun, wenn Sie auf einer Unix-Plattform sind:
awk 'NR % 2 == 0' file > outfile
NR ist die Zeilennummer, daher heißt es nur "Wenn die Linie durch 2 teilbar ist, stecken Sie sie in Newfile."
Wenn Sie unter Windows sind, denke ich, würde die Antwort hier funktionieren:
Ich bin selbst auf dieses Thema gestoßen. Was für mich auch mit der Funktion Suchen/Ersetzen funktioniert hat, ist:
Auf andere Weise können Sie die Befehlszeile cc.dl 5.5
von ConyEdit (ein Plugin) verwenden, um die fünfte Zeile jeder Gruppe zu löschen, fünf Zeilen für jede Gruppe.
Ich glaube nicht, dass es in Notepad ++ eine Funktion gibt, die automatisch jede zweite (oder jede n-te) Zeile löscht, aber wenn Sie ein kurzes Konvertierungsprogramm schreiben, dauert das nur wenige Minuten.
Der Pseudocode würde ungefähr so aussehen:
1. Create a StreamReader and StreamWriter (make sure you are not trying to read from
and write to the same file)
2. While (StreamReader is reading lines) increment i. You could mod it by whatever
number n you wanted in order to delete certain lines. Then have a conditional clause
that would write out if i%n == 0 or whatever you specify.
3. Close the program.
Das beantwortet Ihre Frage nicht genau, aber ich hoffe, es hilft.