J'ai un très gros fichier qui a des espaces de largeur nulle dispersés partout. Il faut trop de temps pour ouvrir et modifier en utilisant vi
donc je voudrais supprimer toutes les instances du personnage en utilisant sed
. Le problème est que je n'arrive pas à trouver comment faire correspondre le personnage! Je l' ai essayé d' utiliser \u200B
, \x{200b}
. Des idées?
J'utilise CentOS 5 si cela peut aider.
Réponses:
Cela semble fonctionner pour moi:
Manifestation:
Éditer:
Basé en partie sur la réponse de Gilles:
la source
\xe2\x80\x8b
) en regardant quelques exemples de chaînes en Python. Je vous remercie!Le comportement de GNU sed avec UTF-8 ne semble pas très bien défini. Expérimentalement, vous pouvez lui faire remplacer les octets de la représentation UTF-8:
Alternativement, vous pouvez taper le caractère dans votre shell et utiliser l'une des commandes standard dans un environnement local UTF-8:
Dans zsh, vous pouvez également saisir le personnage via une séquence d'échappement:
la source
echo -e
, lesprintf
chaînes de format et ANSI entre guillemets les chaînes (par exempleecho -e '\u1E4F'
,printf '\u01DD %s\n' 'X'
,mkdir $'\u0250
)Eh bien, à moins que quelqu'un n'ait des idées sur la façon de
sed
faire cela (ce qui m'intéresse toujours, d'ailleurs) son Python à la rescousse ...la source
perl -C -pe 's/\x{200B}//g'
?perl -C -pi.bak -e 's/\x{200B}//g' yourfile
entraîne la correction de yourfile et une sauvegarde dans yourfile.bak