680 Stimmen

Entfernen von doppelten Zeilen in Notepad++

Ist es möglich, doppelte Zeilen in Notepad++ zu entfernen, so dass nur ein einziges Vorkommen einer Zeile übrig bleibt?

793voto

Colin Pickard Punkte 44501

Notepad++ mit dem TextFX-Plugin kann dies tun, vorausgesetzt, Sie wollten nach Zeilen sortieren und gleichzeitig die doppelten Zeilen entfernen.

Um das TextFX in der neuesten Version von Notepad++ zu installieren, müssen Sie es von hier herunterladen: https://sourceforge.net/projects/npp-plugins/files/TextFX

Das TextFX-Plugin war früher in älteren Versionen von Notepad++ enthalten oder konnte über das Menü hinzugefügt werden, indem man zu Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install . In einigen Fällen kann sie auch als TextFX Characters aber das ist das Gleiche.

Die erforderlichen Kontrollkästchen und Schaltflächen werden nun im Menü unter angezeigt: TextFX -> TextFX Tools .

Vergewissern Sie sich, dass "Nur eindeutige Ausgaben sortieren..." aktiviert ist. Als nächstes wählen Sie einen Textblock ( Ctrl + A um das gesamte Dokument auszuwählen). Klicken Sie schließlich auf "Zeilen nach Groß- und Kleinschreibung sortieren" oder "Zeilen nach Groß- und Kleinschreibung sortieren".

menu layout in n++

791voto

stema Punkte 85725

Seit Notepad++ Version 6 können Sie diese Regex im Dialog Suchen und Ersetzen verwenden:

^(.*?)$\s+?^(?=.*^\1$)

und durch nichts ersetzen . Dadurch wird von allen doppelten Zeilen das letzte Vorkommen in der Datei entfernt.

Dafür ist keine Sortierung erforderlich, und die doppelten Zeilen können sich überall in der Datei befinden!

Sie müssen die Optionen "Regulärer Ausdruck" und ". matches newline" aktivieren:

Notepad++ Replace dialogue

  • ^ mit dem Anfang der Zeile übereinstimmt.

  • (.*?) passt auf beliebige Zeichen 0 oder mehr Mal, aber so wenig wie möglich (es passt genau auf eine Zeile, dies ist wegen der Option ". matches newline" erforderlich). Die übereinstimmende Zeile wird gespeichert, wegen der Klammern um und zugänglich mit \1

  • $ mit dem Ende der Zeile übereinstimmt.

  • \s+?^ dieser Teil passt auf alle Leerzeichen (Zeilenumbrüche!) bis zum Beginn der nächsten Zeile ==> Dadurch werden die Zeilenumbrüche nach der übereinstimmenden Zeile entfernt, so dass nach der Ersetzung keine leere Zeile vorhanden ist.

  • (?=.*^\1$) Dies ist eine positive Vorausschau-Behauptung. Dies ist der wichtige Teil dieser Regex: Eine Zeile wird nur dann gefunden (und entfernt), wenn genau dieselbe Zeile an anderer Stelle in der Datei folgt.

109voto

Grant Peters Punkte 7421

Wenn die Zeilen unmittelbar hintereinander liegen, können Sie eine Regex-Ersetzung verwenden:

Suchmuster: ^(.*\r?\n)(\1)+

Ersetzen durch: \1

68voto

divenex Punkte 12205

Seit der Version 8.1 von Notepad++ gibt es einen speziellen Befehl, der genau das tut, was in dieser beliebten Frage gefragt wird. Man kann doppelte Zeilen in einer Textdatei entfernen mit dem Menübefehl Edit > Line Operations > Remove Duplicate Lines .

Es ist nicht notwendig, ein Plugin zu installieren (wie die derzeit akzeptierte Antwort vorschlägt), die Zeilen vorher zu sortieren oder die Regex-Syntax im Ersetzen-Dialog zu verwenden, wie andere Antworten vorschlugen.

enter image description here

48voto

dr.nixon Punkte 557

In Version 7.8 können Sie dies ohne Plugins erreichen - Bearbeiten -> Zeilenoperationen -> Aufeinanderfolgende doppelte Zeilen entfernen. Sie müssen die Datei sortieren, um die doppelten Zeilen in aufeinanderfolgende Reihenfolge zu bringen, bevor dies funktioniert, aber es funktioniert wie ein Zauber.

Sortieroptionen finden Sie unter Bearbeiten -> Zeilenoperationen -> Sortieren nach ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X