Wie entferne ich jede ungerade Zeile in Notepad ++?

29

Ich versuche ein Dokument mit 20000 Zeilen zu bearbeiten. Ich muss jede ungerade Zeile entfernen, zum Beispiel:

Apple
Monkey
Orange
Lion
fruit
animal

Wie kann ich die Zeichen jeder ungeraden Zeile im Dokument entfernen?

Nithin N
quelle
Was meinst du mit einer ungeraden Zeile? Wollen Sie das ungerade (unerwünschte) Wort aus dem gesamten Dokument entfernen?
Antzshrek
4
Jede ungeradzahlige Zeile wie 1,3,5,7,9,11,13,15 .... usw.
Nithin N
1
Versuchen Sie, durch eine neue Zeile zu ersetzen (regulärer Ausdruck): [\ n. + \ N]
Art Gertner
@ArtGertner Ich habe versucht, mit dem Ausdruck funktioniert es nicht.
Nithin N
1
Ich würde ein dummes Makro aufzeichnen: Abwärtspfeil, Umschalt-Abwärtspfeil, Entf.
chingNotCHing

Antworten:

23

Sie können dies mit Suchen und Ersetzen tun:

  • Öffne den Ersetzen-Dialog ( Ctrl+ H)
  • Wählen Sie "Regulärer Ausdruck"
  • Finde was: .+\r\n(.+(\r\n|$))
  • Ersetzen mit:
    $1
  • Drücken Sie "Alle ersetzen"

Anmerkungen:

  • Abhängig von Ihrem Betriebssystem müssen Sie \r(alten Mac), \n(Unix, OS X) oder \r\n(Windows) verwenden, um das Zeilenende \Rabzugleichen , oder einfach verwenden, was überall funktionieren sollte (danke für @Aurel Bílý)
  • \n|$ wird benötigt, um auch am Ende der Datei ein korrektes Ergebnis zu erzielen
  • Standardmäßig wird Notepad ++ von der tatsächlichen Cursorposition bis zum Ende der Datei ersetzt. Stellen Sie sicher, dass Sie den Cursor an den Anfang der Datei setzen.
    • (Sie können auch "Wrap Around" aktivieren, in diesem Fall wird jedoch zuerst die Zeile gelöscht, in der sich der Cursor befindet, anstatt wirklich nach einer ungeraden Zeile zu suchen.)

Geben Sie hier eine Bildbeschreibung ein

Máté Juhász
quelle
Es funktioniert fast, aber es bearbeitet nicht die ersten ungeradzahligen Zeilen, z. B. von 1 bis 15.
Nithin N
Ändern Sie den Screenshot mit mehr Transparenz für dieses Ersetzungsfenster.
Biswapriyo
11
Bitte beachten Sie, dass \rein Zeilenende sehr selten ist - es wurde zwar in Mac OS verwendet, aber in den klassischen Versionen vor OS-X. In OS X und höher sind die Zeilenenden \nwie bei jedem normalen Unix. Ist auch \Rbesser für die Zuordnung von Zeilenenden.
Aurel Bílý
@ AurelBílý Das stimmt, Notepad ++ läuft jedoch nur unter Windows, so dass die Portabilität hier kein großes Problem darstellt.
Rob
18
  • Ctrl+H
  • Finde was: .+\R(.+)
  • Ersetzen mit: $1
  • Replace all

Erläuterung:

.+      : 1 or more any character but newline
\R      : any kind of linebreak (ie. \r, \n, \r\n)
(       : start group 1
  .+    : 1 or more any character but newline
)       : end group 1
  • Überprüfen Sie den regulären Ausdruck
  • NICHT PRÜFEN . matches newline

Ergebnis für gegebenes Beispiel:

Monkey
Lion
animal
Toto
quelle
@NithinN: Beachten Sie, dass die akzeptierte Antwort nicht mit Linux-Dateien (z. B. Zeilenumbruch \n) funktioniert
Toto
7
  1. Öffnen Sie die Datei und setzen Sie Ihren Textcursor an den Anfang der ersten Zeile.
  2. Menü → MakroAufnahme starten
  3. Drücken Sie die EndTaste auf der Tastatur
  4. Shift+ Homedannbackspace
  5. Down
  6. Backspace
  7. Down
  8. Menü → MakroAufnahme beenden
  9. Menü → MakroMakro mehrmals ausführen → Markieren Sie Bis zum Ende der Datei ausführen
  10. Klicken Run

Führen Sie die Aktion im Allgemeinen einmal aus, um eine ungerade Zeile zu entfernen, und veranlassen Sie dann das Programm, die Aktion bis zum Ende der Datei zu wiederholen. Damit lassen sich viele Probleme lösen!

UserF40
quelle
1

Ich habe gerade den PC meines Kollegen überprüft, der tatsächlich Notepad ++ verwendet. Versuche dies:

Geben Sie hier eine Bildbeschreibung ein

Art Gertner
quelle
Es scheint mir dies, um gerade Linien (2,4,6 ...) zu entfernen, nicht ungerade.
Máté Juhász
1
Das ist richtig. Das Entfernen von geraden Zeilen ist jedoch einfacher, und das Problem kann behoben werden, indem am Anfang der Datei eine leere Zeile
eingefügt wird
@ArtGertner sollte \ r \ n. + \ R \ n ersetzt werden durch \ r \ n
chingNotCHing
@chingNotCHing, gut! Ich habe meine Antwort aktualisiert
Art Gertner
@ArtGertner Wie Sie bereits betont haben, funktioniert dies nur für gerade Linien. Bei großen Datenmengen wird jedoch nicht die erste Datenmenge bearbeitet, z. B. in der 1-15-ten Zeile.
Nithin N