Получение " sed error-незаконная последовательность байтов "(в bash) [дубликат]



этот вопрос уже есть ответ здесь:




  • Ошибка RE: незаконная последовательность байтов на Mac OS X

    5 ответов



сделать некоторые редактирования потока, чтобы изменить неприятный значок Parallels. Он плохо разработан и встроен в само приложение, а не в файл изображения. Поэтому я нашел эту команду sed, которая имеет некоторые хорошие обратная связь:



sudo sed -i.bak s/Parallels_Desktop_Overlay_128/Parallels_Desktop_Overlay_000/g /Applications/Parallels Desktop.app/Contents/MacOS/prl_client_app


возвращает sed: RE error: illegal byte sequence



кто-нибудь может объяснить, что это значит? Какая часть команды является проблемой?

646   4  

4 ответов:

попробуйте установить LANG переменные среды (LANG=C sed ...) или использовать один из бинарных инструментов sed, упомянутых здесь:замена двоичного sed

почему ошибка?

без LANG=C sed предполагает, что файлы кодируются в любой кодировке, указанной в LANG и файл (будучи двоичным) может содержать байты, которые не являются допустимыми символами в LANGкодировка (таким образом, вы можете получить "незаконную последовательность байтов").

почему делает LANG=C работы?

C просто происходит, чтобы обработать все символы ASCII, а сами и не-ASCII символов в качестве литералов.

LANG=C один не сделал трюк для меня, но добавив LC_CTYPE=C а также решил ее.

кроме LANG=C и LC_CTYPE=C, Я должен был сделать LC_ALL=C чтобы заставить это работать.

LC_ALL перекрывает все индивидуально LC_* категории. Таким образом, наиболее надежный подход заключается в использовании LC_ALL=C sed ... - нет необходимости также иметь дело с другими переменными.

мне удалось это сделать, запустив:

unset LANG

до

Comments

    Ничего не найдено.