So entfernen Sie doppelte Wörter aus einer Nur-Text-Datei mit dem Linux-Befehl
Habe ich eine einfache Textdatei mit Wörtern, die durch Kommata getrennt, z.B.:
word1, word2, word3, word2, word4, word5, word 3, word6, word7, word3
ich wollen, löschen Sie die Duplikate, und zu werden:
word1, word2, word3, word4, word5, word6, word7
Irgendwelche Ideen? Ich denke, egrep kann mir helfen, aber ich bin mir nicht sicher, wie es zu benutzen genau....
Kommentar zu dem Problem - Öffnen
Wollen Sie die Wörter, die eindeutig auf einer Linie, die basis oder über die ganze Datei? Auch wollen Sie halten die ursprüngliche Reihenfolge der Wörter, oder sind Sie froh, wenn die Reihenfolge geändert wird?
ich brauche die uniq Wörter, die in der gesamten Datei. die Reihenfolge der Wörter ist nicht wichtig.
InformationsquelleAutor der Frage cupakob | 2009-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unter der Annahme, dass die Wörter pro Zeile und die Datei ist bereits sortiert:
Wenn die Datei ist nicht sortiert:
Wenn Sie nicht eine pro Zeile, und Sie sind nicht dagegen, Ihnen eine pro Zeile:
Nicht entfernen, Satzzeichen, obwohl, so dass Sie vielleicht möchten:
Aber das entfernt den Bindestrich von Bindestrich-Wörtern. "man tr" für mehr Optionen.
InformationsquelleAutor der Antwort Randy Orrison
ruby -pi.bak -e '$_.split(",").uniq.join(",")' filename
?Ich gebe zu, die zwei Arten von Zitaten sind hässlich.
InformationsquelleAutor der Antwort Oliver N.
Schaffen eine einzigartige Liste ist ziemlich einfach, Dank
uniq
, obwohl die meisten Unix-Befehle, wie ein Eintrag pro Linie anstatt eine Komma-separierte Liste, so dass wir beginnen müssen, die durch Umwandlung zu:Der schwierigere Teil ist die Umsetzung dieses auf einer Linie wieder mit Kommata als Trennzeichen und nicht-terminatoren. Ich benutzt ein perl-one-liner, um dies zu tun, aber wenn jemand etwas mehr Redewendungen, bitte editieren Sie mich. 🙂
InformationsquelleAutor der Antwort Ryan Bright
Hier ist ein awk-Skript, das lassen Sie jede Zeile in Takt, nur das entfernen der doppelten Wörtern:
InformationsquelleAutor der Antwort mamboking
Ich würde denken, Sie möchten, ersetzen Sie die Leerzeichen durch Zeilenumbrüche, verwenden Sie die uniq - Befehl, um eindeutige Zeilen, dann ersetzen Sie die Zeilenumbrüche durch Leerzeichen wieder.
InformationsquelleAutor der Antwort Paul Sonier
Ich vermutete, Sie wollte die Worte, die eindeutig auf eine einzige Zeile, anstatt die gesamte Datei. Wenn dies der Fall ist, dann wird das Perl-Skript unten wird den trick tun.
Wenn Sie möchten, dass Eindeutigkeit über die ganze Datei, können Sie einfach bewegen Sie die
%seen
hash außerhalb derwhile (){}
Schleife.InformationsquelleAutor der Antwort Beano
Kam in diesem thread beim Versuch Sie zu lösen, viel das gleiche problem. Ich hatte verkettet mehrere Dateien mit Passwörter, so natürlich gab es eine Menge verdoppelt. Auch viele nicht-standard Charaktere. Ich habe nicht wirklich brauchen Sie Sie sortiert, aber es schien, dass es war gonna be notwendig für uniq.
Habe ich versucht:
Versucht:
Und sogar versucht, übergeben Sie es durch die erste Katze, nur so konnte ich sehen, wenn wir waren immer eine richtige Eingabe.
Ich bin mir nicht sicher, was passiert. Die strings ", t\203tonnement" und "t\203tonner" nicht in der Datei gefunden, obwohl "t/203" und "tonnement" gefunden werden, aber an separaten, nicht angrenzenden Zeilen. Dasselbe mit "zon\351s".
Was schließlich für mich gearbeitet wurde:
Es auch noch Worte, deren einziger Unterschied war der Fall, das ist, was ich wollte. Ich brauchte nicht die Liste so sortiert, es war gut, dass er es nicht war.
InformationsquelleAutor der Antwort sudon't
ich hatte das gleiche problem heute.. eine word-Liste mit 238,000 Worte, sondern über 40, 000 diejenigen, die dupliziert wurden. Ich hatte Sie ja schon in einzelnen Zeilen durch tun
entfernen Sie die Duplikate, ich habe einfach
Perfekt gearbeitet, keine Fehler, und jetzt meine Datei ist unten von 1.45 MB 1.01 MB
InformationsquelleAutor der Antwort Biffinum
Und vergessen Sie nicht, die
-c
option für dieuniq
Dienstprogramm, wenn Sie sind daran interessiert, die Anzahl der Wörter als auch.InformationsquelleAutor der Antwort Rob Wells
öffnen Sie die Datei mit vim (
vim filename
) und ausführen der sort-Befehl mit eindeutigen flag (:sort u
).InformationsquelleAutor der Antwort meysam