при запуске «LC_ALL=C.UTF-8 egrep -axv '.*'» для обнаружения символов, отличных от UTF8, как я могу определить точный символ, вызвавший обнаружение?

Я часто использую эту команду:

      LC_ALL=C.UTF-8 egrep -laxv '.*' filename

это сообщает мне, содержит ли файл какие-либо символы, отличные от UTF8 (на самом деле я обычно использую это вместе сдля сканирования нескольких файлов одновременно)

я могу удалитьчтобы получить реальные строки, содержащие символы UTF-8, а не только имена файлов, и этого обычно достаточно, я обычно могу посмотреть на строку и обнаружить проблемный символ

однако в настоящее время я имею дело с файлом с очень длинными строками, и мне еще не удалось найти оскорбительный символ, просто взглянув на него.

Я хотел бы изменить команду grep, чтобы распечатать только символ, отличный от UTF8, а не всю строку.

К сожалениюне помогает, потому что этоотрицательное совпадение

Я не хочу удалять персонажа (пока), я просто хочу выяснить, что это за персонаж

Я попробовал что-то вроде ```LC_ALL=C.UTF-8 egrep -ao '[^.]', но "." внутри группы символов обрабатывается буквально, поэтому ничего не делает, а выводит каждый символ файла, кроме "."

Если бы я искал символы, отличные от ASCII, я знаю, что мог бы использоватькласс символов, но, похоже, нет эквивалента для UTF-8

Я пытался найтив проблемном файле, но ничего не нашел

Я пробовал альтернативные методы, такие как прогон файла через конвертеры UTF-8 и сравнение его с исходным файлом, но все они утверждают, что файл уже полностью UTF-8. Я думаю, что, возможно, имею дело с ошибкой в ​​grep, из-за которой действительный символ UTF-8 обнаруживается как недействительный, однако для дальнейшего расследования мне нужно знать, какой символ является реальной проблемой.

Ранее, когда я имел дело с другим файлом, я методом проб и ошибок определил, что (для этого конкретного файла) источником проблемы был корейский символ 획. В файле, с которым я сейчас имею дело, есть много корейского языка, однако в нем нет экземпляров 획, поэтому на этот раз проблема должна быть связана с другим символом. В файле, с которым я имел дело ранее, было всего 4 корейских символа, поэтому было легко выяснить, какой из них является причиной проблемы, но файл, с которым я имею дело, содержит гораздо больше символов, и я действительно не хочу делайте это методом проб и ошибок

0 ответов

Другие вопросы по тегам