при запуске «LC_ALL=C.UTF-8 egrep -axv '.*'» для обнаружения символов, отличных от UTF8, как я могу определить точный символ, вызвавший обнаружение?
Я часто использую эту команду:
LC_ALL=C.UTF-8 egrep -laxv '.*' filename
это сообщает мне, содержит ли файл какие-либо символы, отличные от UTF8 (на самом деле я обычно использую это вместе с
я могу удалить
однако в настоящее время я имею дело с файлом с очень длинными строками, и мне еще не удалось найти оскорбительный символ, просто взглянув на него.
Я хотел бы изменить команду grep, чтобы распечатать только символ, отличный от UTF8, а не всю строку.
К сожалению
Я не хочу удалять персонажа (пока), я просто хочу выяснить, что это за персонаж
Я попробовал что-то вроде ```LC_ALL=C.UTF-8 egrep -ao '[^.]', но "." внутри группы символов обрабатывается буквально, поэтому ничего не делает, а выводит каждый символ файла, кроме "."
Если бы я искал символы, отличные от ASCII, я знаю, что мог бы использовать
Я пытался найти
Я пробовал альтернативные методы, такие как прогон файла через конвертеры UTF-8 и сравнение его с исходным файлом, но все они утверждают, что файл уже полностью UTF-8. Я думаю, что, возможно, имею дело с ошибкой в grep, из-за которой действительный символ UTF-8 обнаруживается как недействительный, однако для дальнейшего расследования мне нужно знать, какой символ является реальной проблемой.
Ранее, когда я имел дело с другим файлом, я методом проб и ошибок определил, что (для этого конкретного файла) источником проблемы был корейский символ 획. В файле, с которым я сейчас имею дело, есть много корейского языка, однако в нем нет экземпляров 획, поэтому на этот раз проблема должна быть связана с другим символом. В файле, с которым я имел дело ранее, было всего 4 корейских символа, поэтому было легко выяснить, какой из них является причиной проблемы, но файл, с которым я имею дело, содержит гораздо больше символов, и я действительно не хочу делайте это методом проб и ошибок