Antworten:
Sortieren Sie Zeilen alphabetisch, falls dies noch nicht geschehen ist, und führen Sie die folgenden Schritte aus:
(Basierend auf dieser verwandten Frage: Wie finde und entferne ich doppelte Zeilen mithilfe von regulären Ausdrücken aus einer Datei? )
Control+F
Schalten Sie "Ersetzungsmodus" um
Aktivieren Sie "Regulären Ausdruck verwenden" (das Symbol mit dem .*
Symbol).
Geben Sie im Suchfeld Folgendes ein^(.*)(\n\1)+$
Geben Sie in das Feld " Ersetzen durch " ein$1
In diesem Fall greifen Sie entweder auf eine Lösung außerhalb von VS Code zurück (siehe hier ) oder - wenn Ihr Dokument nicht sehr groß ist und Sie nichts dagegen haben, die Schaltfläche Alle ersetzen zu spammen - folgen Sie den vorherigen Schritten, aber in den Schritten 4 und 5: Geben Sie Folgendes ein:
(basierend auf Entfernen bestimmter doppelter Zeilen ohne Sortierung )
Achtung: Blöcke für Dateien mit zu vielen Zeilen (1000+); kann zum Absturz von VS Code führen; kann in einigen Fällen Leerzeilen einführen.
Suche :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
ersetzen durch :$1
Klicken Sie dann so oft auf die Schaltfläche "Alle ersetzen", wie es doppelte Vorkommen gibt .
Sie werden wissen, dass es ausreicht, wenn die Zeilenanzahl nicht mehr abnimmt, wenn Sie auf die Schaltfläche klicken. Navigieren Sie zur letzten Zeile des Dokuments, um dies im Auge zu behalten.
^(.*)(\n\1)+$
. Nach dem Entfernen doppelter Zeilen möchte ich alle Zeilen mit doppelter erster Spalte in der CSV anzeigen und den regulären Ausdruck ändern.
\r?
Bit von der anderen Antwort nicht wirklich notwendig ist.
Hier ist eine sehr interessante Erweiterung: Transformer
Eigenschaften:
So entfernen Sie doppelte Zeilen:
Entfernt doppelte Zeilen aus dem Dokument
Arbeitet mit Auswahl oder aktuellem Block, wenn keine Auswahl erfolgt
Ich habe außer dem Befehl "Unique Lines" nicht viel damit gespielt, aber es scheint ziemlich gut gemacht zu sein (einschließlich des Versuchs eines Makrorecorders!).
Zur Antwort von @ Marc.2377 hinzufügen.
Wenn die Reihenfolge wichtig ist und es Ihnen egal ist, dass Sie nur die letzte der doppelten Zeilen behalten, suchen Sie einfach nach dem folgenden regulären Ausdruck, wenn Sie nur doppelte, nicht leere Zeilen entfernen möchten
^(.+\n)(?=(?:.*\n)*?\1)
Wenn Sie auch doppelte Leerzeilen entfernen möchten, verwenden Sie *
anstelle von+
^(.*\n)(?=(?:.*\n)*?\1)
und durch nichts ersetzen.
Dies wird eine Zeile dauern und versuchen, weitere (möglicherweise 0) Zeilen voraus zu finden, gefolgt von genau derselben Zeile. Die genommene Linie wird entfernt.
Dies ist nur eine einmalige Regex. Sie müssen den Ersetzungsknopf nicht als Spam versenden.
^(.+\n)(?=(?:.*\n)*?\1)
stattdessen, weil Ihre Regex eine leere Zeile entfernt hat, wo dies nicht erwartet wurde. Trotzdem upvoted.
xxx(?=…)
ist ein Lookahead-Match. So wird sichergestellt, dass "xxx" mit "..." übereinstimmt, die Suche jedoch nicht vorantreibt. (?:…)
ist nur eine Klammer, die bei der Klammerzählung nicht berücksichtigt wird. .*\n
ist ein Muster für eine (möglicherweise leere) Zeile. *
bedeutet, dass es so viele Zeilen geben kann, auch keine. Das ?
Nach dem Sternchen ( *
) bedeutet, dass wir so wenig Zeilen wie möglich haben möchten. Wie \1
folgt folgt dieser Ausdruck, dass wir nach vorne nach allen Linien suchen, die nicht übereinstimmen, \1
bis wir eine Linienübereinstimmung finden \1
. Ich hoffe das macht es klar.
Ich hatte gerade das gleiche Problem und fand das Visual Studio Code-Paket "Zeilen sortieren". Weitere Informationen finden Sie auf dem Visual Studio Code-Marktplatz (z . B. Zeilen sortieren ).
Dieses Paket hat die Option "Zeilen sortieren (eindeutig)", die es für mich getan hat. Achten Sie auf Leerzeichen am Anfang / Ende der Zeilen. Sie beeinflussen, ob Linien als eindeutig betrachtet werden oder nicht.
Installieren Sie die DupChecker- Erweiterung, drücken SieF1 und geben Sie "Duplikate prüfen " ein.
Es wird nach Duplikaten gesucht und gefragt, ob Sie diese entfernen möchten.
Versuchen Sie, einen regulären Ausdruck zu finden und durch einen regulären Ausdruck zu ersetzen .
Finden:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Ersetzen:
$1$2
Es ist möglich, eine gewisse Varianz in die erste Gruppe einzuführen.
Nicht wirklich in Visual Studio Code, aber wenn es funktioniert, funktioniert es.
Es ist nicht die beste Antwort, wie Sie Visual Studio Code angegeben haben, aber wie gesagt: Wenn es funktioniert, funktioniert es :)
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
hat meinen vscode zum Absturz gebracht .... Ich habe in einer Datei 229 Zeilen gesucht. :(