2011-12-19 7 views

Odpowiedz

37

Jeśli chcesz usunąć tylko poszczególne znaki i trzeba Pythona można:

CHARS=$(python -c 'print u"\u0091\u0092\u00a0\u200E".encode("utf8")') 
sed 's/['"$CHARS"']//g' </tmp/utf8_input.txt> /tmp/ascii_output.txt 
+0

Może nie najładniejsza. Ale dla mnie to zadziałało bardzo dobrze. Konstruując zmienną CHARS, stała się łatwiejsza do odczytania, a zmienna CHARS może być łatwo utrzymana. Odpowiedź Choroby też działa, więc myślę, że to kwestia gustu (i jeśli masz pod ręką Python). – Paulb

+1

Jest to alternatywny kod części Pythona "python -c" print "" .join (map (unichr, range (0x80, 0xa0) + range (0x2000, 0x200f))). Encode ("utf-8") " ' –

+1

w ostatnich wersjach systemu Linux można pisać znaki Unicode, naciskając Ctrl + Shift + U, a następnie kod liczbowy i , np. 'Ctrl + Shift + u 0019 ⏎' – smoebody

12

Zastosowanie iconv:

iconv -f utf8 -t ascii//TRANSLIT </tmp/utf8_input.txt> /tmp/ascii_output.txt 

To przełoży znaków jak "Š" do "S" (najbardziej podobne wyglądające).

+1

nie są one ascii, chcę zachować je w utf8, ale chcę zamienić te dziwne spacje na normalny pusty ciąg '' "' – alvas

+0

Zobacz moją inną odpowiedź –

+0

Nie, co OP chciał, ale miałem potrzebę konwertowania unicode liniowy separator (u2028) do nowej linii. Wolałbym używać iconv, ale nie mogłem wymyślić, jak to zrobić. Czy istnieje sposób? –

49

wyraźne wszystko non-ASCII znaków z file.txt

$ iconv -c -f utf-8 -t ascii file.txt 
$ strings file.txt 
+0

Chcę zachować kodowanie Unicode. przepraszam, więc iconv nie jest rozwiązaniem. – alvas

+2

Dlaczego po prostu nie możesz uruchomić go w odwrotnej kolejności? tempf = $ (mktemp) iconv -c -f utf-8 -t plik ascii.txt> $ tempf iconv -f ascii -t utf-8 $ tempf> plik.txt –

+1

UTF-8 jest prawidłowym podzbiorem ASCII. Transformacja odwrotna powoduje, że plik pozostaje niezmieniony. –

21

UTF-8 Unicode, możesz użyć tego wyrażenia regularnego dla sed:

sed 's/\xc2\x91\|\xc2\x92\|\xc2\xa0\|\xe2\x80\x8e//' 
+2

Jak znaleźć mapowanie z 'U + ...' na '\ xc2 \ ...'? – alvas

+18

'echo -ne '\ u0091' | xxd' – kev

+1

To może być dobry początek - http://www.utf8-chartable.de/ –

Powiązane problemy