У меня есть очень большой файл, в котором разбросаны пробелы нулевой ширины. Это занимает слишком много времени, чтобы открыть и редактировать, используя, vi
поэтому я хотел бы удалить все экземпляры символа, используя sed
. Проблема в том, что я не могу понять, как соответствовать характеру! Я попытался с помощью \u200B
, \x{200b}
. Есть идеи?
Я использую CentOS 5, если это поможет.
Ответы:
Кажется, это работает для меня:
Демонстрация:
Редактировать:
Основано частично на ответе Жиля:
источник
\xe2\x80\x8b
) при просмотре некоторых примеров строк в Python. Спасибо!Поведение GNU sed с UTF-8 не очень четко определено. Экспериментально, вы можете заменить его байтами представления UTF-8:
Кроме того, вы можете ввести символ в свою оболочку и использовать любую из стандартных команд в локали UTF-8:
В zsh вы также можете ввести символ через escape-последовательность:
источник
echo -e
,printf
формат строка и ANSI кавычек (напримерecho -e '\u1E4F'
,printf '\u01DD %s\n' 'X'
,mkdir $'\u0250
)Ну, если у кого-то нет идей, как заставить
sed
это сделать (кстати, меня это все еще интересует) его Python на помощь ...источник
perl -C -pe 's/\x{200B}//g'
?perl -C -pi.bak -e 's/\x{200B}//g' yourfile
в результате исправляется ваш файл и резервная копия в yourfile.bak