Mam bardzo duży plik z rozproszonymi spacjami o zerowej szerokości. Otwarcie i edycja za pomocą zajmuje zbyt dużo czasu, vi
dlatego chciałbym usunąć wszystkie wystąpienia postaci używającej sed
. Problem polega na tym, że nie potrafię dopasować postaci! Próbowałem za pomocą \u200B
, \x{200b}
. Jakieś pomysły?
Używam CentOS 5, jeśli to w ogóle pomaga.
Odpowiedzi:
Wydaje mi się, że to działa:
Demonstracja:
Edytować:
Na podstawie częściowo odpowiedzi Gillesa:
źródło
\xe2\x80\x8b
), patrząc na niektóre ciągi znaków w Pythonie. Dziękuję Ci!Zachowanie GNU sed z UTF-8 nie wydaje się być zbyt dobrze zdefiniowane. Eksperymentalnie możesz sprawić, że zastąpi bajty reprezentacji UTF-8:
Alternatywnie możesz wpisać znak do swojej powłoki i użyć dowolnego ze standardowych poleceń w ustawieniach regionalnych UTF-8:
W Zsh możesz również wprowadzić postać poprzez sekwencję ucieczki:
źródło
echo -e
,printf
wielkoformatowych strun i ANSI notowane ciągi (npecho -e '\u1E4F'
,printf '\u01DD %s\n' 'X'
,mkdir $'\u0250
)Cóż, chyba że ktoś ma jakieś pomysły, jak to
sed
zrobić (przy okazji, nadal mnie to interesuje). Python na ratunek ...źródło
perl -C -pe 's/\x{200B}//g'
?perl -C -pi.bak -e 's/\x{200B}//g' yourfile
skutkuje naprawieniem twojego pliku i utworzeniem kopii zapasowej w twoim pliku.bak