Gleiches Wort in Textdatei wird nicht als gleich erkannt

FatManStanding

Lt. Junior Grade
Registriert
Aug. 2021
Beiträge
385
tach,

ich möchte in einer wortliste die als einfache textdatei vorliegt per "sort" und "uniq" mögliche doppelte wörter löschen. jedes wort liegt in einer eigenen zeile vor. das geht grds. bei einem hab ich aber probleme und ich verstehe nicht wieso. die wortliste wird durch ein script gefüllt, ich vermute also, dass bei einfügen der wörter irgendwas angehängt wird, dass als unterschied erkannt wird. bekommt man heraus was das ist? wenn ich die datei im editor geany öffne sehe ich keinen unterschied.
 
Man könnte die entsprechenden Zeilen in einem HEXeditor vergleichen.


Edit:
Beispielsweise sehen I und l in manchen Zeichensätzen oder Editoren gleich aus, sind aber dennoch ein großes i und ein kleines L.
 
  • Gefällt mir
Reaktionen: DeusoftheWired und madmax2010
Unwahrscheinlich aber nicht unmöglich: Homographie. Das lateinische A und das kyrillische A sind z. B. pixelidentisch, für einen Menschen mit seinen Augen also nicht voneinander unterscheidbar. Für einen Computer sind es aber zwei völlig unterschiedliche Zeichen, unter anderem erkennbar an ihrem Hexwert, den dvor schon angesprochen hat.

Eine andere Möglichkeit sind sonst unsichtbare Steuerzeichen wie Zeilenvorschub und Wagenrücklauf. vim und emacs können sie anzeigen, aber es gibt unter Lunix noch -zig andere, die das können.

Am einfachsten ist es, wenn du uns das Skript als fertige .sh oder seinen Inhalt in [code][/code]-Tags hier hochlädst. Die zu analysierende Textdatei sollte als fertige .txt hochgeladen werden.
 
Liefert sort -u dasselbe Ergebnis?
 
ja, auch mit sort -u. ich hab das jetzt nochmal komplett neu durchgespielt, jetzt passiert das nicht wieder. wenn es wieder auftreten sollte, würde ich das mit dem hex editor versuchen. dass es gleich aussehende zeichen sind würde ich fast ausschließen.
 
Du kannst auch mal die Datei im Vim laden. Mit
Code:
:set list
kannst du Dir die Steuerzeichen anzeigen lassen, d.h. Zeilenumbruch, Tabs usw.

Du kannst auch im Vim testweise die Datei sortieren und doppelte Zeilen entfernen lassen:
Code:
:sort u

Falls uniq nicht funktioniert, kann das auch einen ganz profanen Grund haben:
Manpage uniq schrieb:
Benachbarte identische Zeilen aus EINGABE (oder der Standardeingabe) filtern, das Ergebnis in AUSGABE (oder die Standardausgabe) schreiben.
 
Pummeluff schrieb:
Falls uniq nicht funktioniert, kann das auch einen ganz profanen Grund haben:
Genau deswegen werden sort und uniq in der Regel gepipet, also sort bla.txt | uniq

sort -u bla.txt macht das sogar intern in einem Vorgang, daher hatte ich explizit danach gefragt, um Fehlbedienung auszuschließen. Wenn sort -u jedoch dasselbe falsche Ergebnis liefert, ist anzunehmen, dass es an der Quelldatei liegt.
 
  • Gefällt mir
Reaktionen: andy_m4
Zurück
Oben