Есть ли способ удалить специальные символы из текстового файла?

Я пытаюсь выполнить базовый анализ текста из командной строки, но всякий раз, когда я пытаюсь запустить команду, я получаю следующее: tr: Недопустимая последовательность байтов. Я сузил проблему до специальных символов в тексте (´, ˆ,¨ и т. д.). Можно ли что-то сделать, чтобы удалить эти специальные символы из текста? Могу ли я использовать командную строку? Или мне нужно запустить скрипт?


person Michael Kirby    schedule 22.01.2017    source источник
comment
См. unix.stackexchange.com/questions /141420/, я думаю, что ваш файл имеет неправильную кодировку. Вы на какой ОС? См., например, stackoverflow.com/questions/64860/.   -  person Freek Wiedijk    schedule 22.01.2017
comment
Спасибо за ответ! Я использую macOS Сьерра. Я дам ссылку, которую вы предоставили, чтобы посмотреть.   -  person Michael Kirby    schedule 22.01.2017
comment
Так что, если вы действительно хотите избавиться от символов, отличных от ascii, в вашем файле, возможно, iconv -f utf8 -t ascii//TRANSLIT — это то, что вам нужно. Или, скорее, с чем-то другим вместо utf8, в зависимости от того, что находится в вашем файле. См. stackoverflow.com/questions/8562354/.   -  person Freek Wiedijk    schedule 22.01.2017
comment
И вы можете использовать file -I, чтобы угадать кодировку вашего файла, см. заголовок stackoverflow.com/questions/4255305/.   -  person Freek Wiedijk    schedule 23.01.2017


Ответы (1)


Я не знаю, как вы пытаетесь обработать свой текст, но, видимо, вы пытаетесь запустить tr, что выдает вам сообщение об ошибке tr: Illegal byte sequence. Это происходит, когда его ввод не является последовательностью байтов, соответствующей действительной кодировке UTF-8 (не все последовательности байтов соответствуют кодировке UTF-8 ряда символов Unicode).

Я не знаю, какой тип файла вы пытаетесь обработать, но в среде MacOS X команда file -I может дать вам представление о кодировке, которая на самом деле существует.

Если вам нужно просто перекодировать ваш файл, то iconv — полезная программа. Вы можете использовать его для перекодирования в кодировку UTF-8 с помощью iconv -f ... -t utf8 (где ... — это кодировка вашего исходного файла, запустите iconv -l, чтобы получить список доступных кодировок).

Или, если вы действительно хотите удалить специальные символы в вашем файле (как указано в заголовке вашего вопроса), вы можете использовать iconv -f ... -t ascii//TRANSLIT. В этом последнем случае «специальные символы» будут аппроксимированы обычными символами ASCII.

person Freek Wiedijk    schedule 23.01.2017