webentwicklung-frage-antwort-db.com.de

Löschen Sie jede zweite Zeile in Notepad ++

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

40
fightstarr20

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.)

83
Jasper

Sie können versuchen, ein Makro zu verwenden. 

  1. Starten Sie die Aufnahme des Makros
  2. N-mal niederdrücken
  3. Drücken Sie Umschalt + Ende
  4. Drücken Sie zweimal auf Löschen
  5. Beenden Sie die Aufnahme des Makros
  6. Führen Sie das Makro bis zum Ende der Datei aus
19
bsmk

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:

Batchdatei, um eine von zehn Zeilen zu behalten

6
Evan Reynolds

Ich bin selbst auf dieses Thema gestoßen. Was für mich auch mit der Funktion Suchen/Ersetzen funktioniert hat, ist:

  1. Strg F und gehe zu Ersetzen
  2. Wählen Sie im Suchmodus "Erweitert (\ n,\r,\t ..)".
  3. Finden Sie was:\n\n
  4. Ersetzen durch:\n
  5. Alles ersetzen
2
Steven C

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.

0
Hunter

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.

0
khinkle