Ist es möglich, doppelte Zeilen in Notepad++ zu entfernen, so dass nur ein einziges Vorkommen einer Zeile übrig bleibt?
Antworten
Zu viele Anzeigen?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".
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:
-
^
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.
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.
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 ...
- See previous answers
- Weitere Antworten anzeigen