Gibt es eine Möglichkeit, doppelte Zeilen in Sublime Text zu extrahieren?

5267
Poma

Ich muss zwei Operationen in Sublime Text ausführen: Extrahieren Sie eindeutige Zeilen und extrahieren Sie doppelte Zeilen. Zum Beispiel für die Eingabe

a b a 

Duplikate extrahieren sollte folgendes ergeben:

a 

und Extrahieren einzigartig sollte folgendes ergeben:

b 

Gibt es eine eingebaute Operation oder ein Plugin dafür?

4

4 Antworten auf die Frage

6
twamley

Du kannst doppelte Zeilen leicht finden, indem du einen Sort Linesausführst ^und dann nach diesem Regex suchst, der Linienbegrenzungsmarkierungen $und die hintere Referenz verwendet \1.

^(.+)$\n^\1$ 

Folgen Sie dem mit Alle suchen, Kopieren, Einfügen in einem neuen Tab, Linien genehmigen | Einzigartig und du hast sie extrahiert.

Das ist erstaunlich: Ich habe einen kleinen Zusatz hinzugefügt, der mir dabei geholfen hat: 1. Führen Sie den Regex aus. 2. Ersetzen Sie alle übereinstimmenden Werte durch: \ t $ 1, wodurch alle übereinstimmenden Werte eingerückt werden und nur eine Instanz davon in der Datei 3 gespeichert wird. Führen Sie einen weiteren Regex aus: ^ \ d. * $ Und ersetzen Sie \ d durch Ihr relevantes Tag 4. Dadurch bleiben nur die duplizierten Werte erhalten Oz Radiano vor 5 Jahren 0
1
MJH

Leider habe ich momentan keinen Zugriff auf Sublime Text, daher kann ich das nicht testen, aber ich glaube, dass etwas wie das Folgende für Sie funktionieren könnte:

  1. Sortieren Sie die Zeilen mit dem Edit -> Sort LinesBefehl
  2. Installieren Sie das Highlight Duplicates Plugin und markieren Sie alle doppelten Zeilen
  3. Schneiden Sie die hervorgehobenen Linien in die Zwischenablage aus und fügen Sie sie in eine neue Datei ein
  4. Die Zeilen, die in der Originaldatei verbleiben, sind Ihre Extract Unique- Zeilen
  5. Markieren Sie in der neuen Datei den gesamten Text und entfernen Sie doppelte Zeilen mit dem Edit -> Permute Lines -> UniqueBefehl
  6. Die Zeilen, die in der neuen Datei verbleiben, sind die Zeilen für das Extrahieren von Duplikaten

Ich bin nicht ganz sicher, dass Schritt # 1 tatsächlich notwendig ist, aber ich habe ihn nur für den Fall aufgenommen.

Ich wunderte mich dasselbe und habe es gerade ausprobiert (Sublime 3.0, hier) ... das erste Sortieren ist nicht nötig. (Anders als bei Unix 'uniq'.) Schön. Tom Hundt vor 6 Jahren 0
0
Alex M.

@MJH-Antwort oben leicht modifiziert, um duplizierte Zeilen mit Sublime 3 und DiffMerge zu erhalten, ohne Highlight DuplicatesPlugin zu verwenden.

  1. Sortieren Sie die Zeilen mit dem Edit -> Sort LinesBefehl Sublime 3
  2. Speichern Sie die Originaldatei als sortierte_orig.txt
  3. Markieren Sie den gesamten Text und entfernen Sie doppelte Zeilen mit dem Edit -> Permute Lines -> UniqueBefehl Sublime 3
  4. Speichern Sie die geänderte Datei als no_dup_sorted.txt
  5. Starten Sie diff mit dem DiffMerge-Tool mit den Dateien selected_orig.txt und no_dup_sorted.txt .
  6. Verwenden Sie Export -> File Diffsin DiffMerge eine Liste von Duplikaten in die Zwischenablage zu erhalten oder auf eine andere Datei zu speichern.
0
Tom Hundt

Hatte das gleiche Problem (zeig mir die Dupes) ... fand keine einfache Sublime-basierte Antwort und griff auf die Verwendung von Unix-Befehlen zurück (meine Datei hatte die Daten, von denen ich die Duplikate in den Spalten 11-56 finden wollte):

cut -c 11-56 myfile.dat | sort | uniq -d 

Als FYI hier veröffentlicht.

übrigens I'va hat ein [plugin gemacht, das das tut] (https://packagecontrol.io/packages/Extract%20Lines) Poma vor 6 Jahren 0