Eu tenho um arquivo muito grande que possui espaços de largura zero espalhados por todo. Leva muito tempo para abrir e editar usando, vi
então eu gostaria de excluir todas as instâncias do personagem usando sed
. O problema é que não consigo descobrir como combinar o personagem! Eu tentei usar \u200B
, \x{200b}
. Alguma ideia?
Estou executando o CentOS 5, se isso ajuda em tudo.
Respostas:
Isso parece funcionar para mim:
Demonstração:
Editar:
Baseado parcialmente na resposta de Gilles:
fonte
\xe2\x80\x8b
) ao examinar algumas seqüências de amostra em Python. Obrigado!O comportamento do GNU sed com UTF-8 não parece estar muito bem definido. Experimentalmente, você pode substituir os bytes da representação UTF-8:
Como alternativa, você pode digitar o caractere no seu shell e usar qualquer um dos comandos padrão em um código de idioma UTF-8:
No zsh, você também pode inserir o caractere através de uma sequência de escape:
fonte
echo -e
,printf
cadeias de formato e ANSI citado cordas (por exemploecho -e '\u1E4F'
,printf '\u01DD %s\n' 'X'
,mkdir $'\u0250
)Bem, a menos que alguém tenha alguma idéia de como
sed
fazer isso (pelo qual ainda estou interessado, a propósito), é Python para o resgate ...fonte
perl -C -pe 's/\x{200B}//g'
?perl -C -pi.bak -e 's/\x{200B}//g' yourfile
resulta em yourfile fixo e um backup no yourfile.bak