Наткнулся на эту тему при попытке решить практически ту же проблему. Я объединил несколько файлов, содержащих пароли, поэтому, естественно, было много пар. Также много нестандартных персонажей. Я действительно не нуждался в их сортировке, но казалось, что это будет необходимо для Uniq.
Я пытался:
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'
Пробовал:
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'.
И даже попытался сначала пропустить его через cat, чтобы я мог видеть, получали ли мы правильные данные.
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'.
Я не уверен, что происходит. Строки "t \ 203tonnement" и "t \ 203tonner" не найдены в файле, хотя "t / 203" и "tonnement" найдены, но на отдельных несмежных строках. То же самое с "zon \ 351s".
Что наконец-то сработало для меня:
awk '!x[$0]++' /Users/me/Documents/file.txt > /Users/me/Documents/file2.txt
Это также сохранило слова, единственное отличие которых было в случае, что я и хотел. Мне не нужно было сортировать список, так что было прекрасно, что это не так.