Natknąłem tego wątku, starając się rozwiązać podobny problem.Łączę kilka plików zawierających hasła, więc naturalnie było dużo dublerów. Ponadto wiele niestandardowych znaków. Tak naprawdę nie potrzebowałem ich posortować, ale wydawało się, że będzie to konieczne do uniq.
Próbowałem:
sort /Users/me/Documents/file.txt | uniq -u
sort: string comparison failed: Illegal byte sequence
sort: Set LC_ALL='C' to work around the problem.
sort: The strings compared were `t\203tonnement' and `t\203tonner'
Tried:
sort -u /Users/me/Documents/file.txt >> /Users/me/Documents/file2.txt
sort: string comparison failed: Illegal byte sequence
sort: Set LC_ALL='C' to work around the problem.
sort: The strings compared were `t\203tonnement' and `t\203tonner'.
I nawet próbował przepuszczenie go przez kota pierwszy, po prostu, więc mogłem zobaczyć, czy byliśmy coraz właściwego wejścia.
cat /Users/me/Documents/file.txt | sort | uniq -u > /Users/me/Documents/file2.txt
sort: string comparison failed: Illegal byte sequence
sort: Set LC_ALL='C' to work around the problem.
sort: The strings compared were `zon\351s' and `zoologie'.
Nie jestem pewien, co się dzieje. Łańcuchy "t \ 203tonnement" i "t \ 203tonner" nie zostały znalezione w pliku, chociaż występują "t/203" i "tonacja", ale na osobnych, niesąsiadujących liniach. To samo z "zon \ 351s".
Co ostatecznie pracował dla mnie było:
awk '!x[$0]++' /Users/me/Documents/file.txt > /Users/me/Documents/file2.txt
również zachowane słowa, których jedyną różnicą było to sprawa, która jest, co chciałem. Nie potrzebowałem listy posortowanej, więc było dobrze, że tak nie było.
Czy chcesz, aby słowa były unikatowe w linii lub w całym pliku? Czy chcesz zachować oryginalną kolejność słów, czy też jesteś szczęśliwy, jeśli zamówienie zostanie zmienione? – Beano
Potrzebuję słów uniq w całym pliku. kolejność słów nie jest ważna. – cupakob
Zobacz też: [Jak znaleźć powtarzające się słowa w pliku używając grep/egrep?] (Http://stackoverflow.com/q/33396629/562769) –