У меня есть файл данных UTF-8 с некоторой неожиданной последовательностью символов UTF-8, которая прерывает обработку данных. Мне нужно заменить эту последовательность с пробелами или любым безопасным характером (Данные из внешнего источника):Bash: Заменить специальную последовательность символов
In Hex: E2 80 8B (​)
В Баше скрипте, как я могу заменить эти символы с помощью инструмента командной строки, как sed
или replace
команд? Я пробовал с:
sed 's/​/ /g' file_1 > file_2
Но он не работает (данные не заменены). Есть ли специальный синтаксис для указания регулярного выражения с символами «hex» вместо символов ascii? Можно заменить «двоичную» замену, используя 3-байтную последовательность?
Примечание: файл UTF-8 кодируются, так что я думаю, что проблема поиска реальной последовательности, потому что не в UTF-8 (3 байта ASCII)
Можете ли вы попытаться объяснить, как эта последовательность байтов «плохой UTF-8»? И не использовать слово «ascii»? –
Это плохо для меня, я предпочитаю использовать «неожиданный». Процесс преобразования удаляет символ. –
Я искал и нашел «Hex String Replacement Using sed» http://stackoverflow.com/questions/7760717/hex-string-replacement-using-sed и попытался использовать последовательность '' s/\ xE2 \ x80 \ x8B// g'', и кажется, что он работает. –