Tengo un archivo muy grande que tiene espacios de ancho cero dispersos por todas partes. Se tarda demasiado en abrir y editar usando, vi
por lo que me gustaría eliminar todas las instancias del personaje usando sed
. ¡El problema es que no puedo encontrar la manera de unir al personaje! He intentado usar \u200B
, \x{200b}
. ¿Algunas ideas?
Estoy ejecutando CentOS 5 si eso ayuda en absoluto.
Respuestas:
Esto parece funcionar para mí:
Demostración:
Editar:
Basado parcialmente en la respuesta de Gilles:
fuente
\xe2\x80\x8b
) al mirar algunas cadenas de muestra en Python. ¡Gracias!El comportamiento de GNU sed con UTF-8 no parece estar muy bien definido. Experimentalmente, puede hacer que reemplace los bytes de la representación UTF-8:
Alternativamente, puede escribir el carácter en su shell y usar cualquiera de los comandos estándar en un entorno local UTF-8:
En zsh, también puede ingresar el carácter a través de una secuencia de escape:
fuente
echo -e
,printf
las cadenas de formato y ANSI citan cadenas (por ejemploecho -e '\u1E4F'
,printf '\u01DD %s\n' 'X'
,mkdir $'\u0250
)Bueno, a menos que alguien tenga alguna idea de cómo
sed
hacer esto (que todavía me interesa, por cierto), es Python al rescate ...fuente
perl -C -pe 's/\x{200B}//g'
?perl -C -pi.bak -e 's/\x{200B}//g' yourfile
resultados en su archivo fijo y una copia de seguridad en yourfile.bak