Ich habe eine sehr große Datei, die über alle Bereiche der Breite Null verteilt ist. Das Öffnen und Bearbeiten mit dauert zu lange, vi
daher möchte ich alle Instanzen des Zeichens mit löschen sed
. Das Problem ist, ich kann nicht herausfinden, wie ich den Charakter anpassen soll! Ich habe versucht mit \u200B
, \x{200b}
. Irgendwelche Ideen?
Ich verwende CentOS 5, wenn das überhaupt hilft.
Antworten:
Das scheint bei mir zu funktionieren:
Demonstration:
Bearbeiten:
Teilweise basierend auf Gilles 'Antwort:
quelle
\xe2\x80\x8b
beim Betrachten einiger Beispielzeichenfolgen in Python den gleichen Zeichensatz ( ) bemerkt . Vielen Dank!Das Verhalten von GNU sed mit UTF-8 scheint nicht sehr klar zu sein. Experimentell können Sie festlegen, dass die Bytes der UTF-8-Darstellung ersetzt werden:
Alternativ können Sie das Zeichen in Ihre Shell eingeben und einen der Standardbefehle in einem UTF-8-Gebietsschema verwenden:
In zsh können Sie das Zeichen auch über eine Escape-Sequenz eingeben:
quelle
echo -e
,printf
Formatstrings und ANSI Strings in Anführungszeichen (zBecho -e '\u1E4F'
,printf '\u01DD %s\n' 'X'
,mkdir $'\u0250
)Nun, es sei denn, jemand hat irgendwelche Ideen, wie man
sed
das macht (was mich übrigens immer noch interessiert), es ist Python zur Rettung ...quelle
perl -C -pe 's/\x{200B}//g'
?perl -C -pi.bak -e 's/\x{200B}//g' yourfile
Ergebnisse in Ihrer Datei behoben und eine Sicherung in yourfile.bak