2012-03-27 16 views
9

W dystrybucji opartej na Debianie jest narzędzie o nazwie nieprzezroczyste, które może być użyte do usunięcia akcentów z liter akcentowanych w tekście.Nieakcentowany ciąg w skrypcie basha (RHEL)

Szukałem pakietu zawierającego to na dystrybucjach Redhat, ale jedyną, którą znalazłem była unac dostępna tylko dla Mandrivy.

Próbowałem użyć iconv, ale wygląda na to, że nie obsługuje mojego przypadku.

Jakie jest najlepsze, lekkie podejście, łatwe do wykorzystania w skrypcie Bash? Czy są jakieś ukryte opcje ikony iconv, które na to pozwalają?

+1

[ '] (unaccent' http://www.nongnu.org/unac/unaccent-man1.en.html) nie * usuwa * znaków akcentowanych, ale "usuwa [s] akcenty ze strumienia wejściowego lub ciągu znaków" ("été" zmienia się na "ete", nie "t") - To się nazywa [sortowanie] (https://en.wikipedia.org/wiki/Collation). Czy na pewno chcesz * usunąć * znaki? – l0b0

+0

masz absolutną rację, chcę usunąć akcenty, dziękuję za poprawkę :) (Właśnie naprawiłem pytanie) –

Odpowiedz

13

Można użyć opcji -c (clear) w iconv usunąć znaki spoza ASCII:

$ echo 'été' | iconv -c -f utf8 -t ascii 
t 

Jeśli chcesz tylko usunąć akcentem

$ echo 'été' | iconv -f utf8 -t ascii//TRANSLIT 
ete 
+0

Dzięki, ale jak zauważyłem @ l0b0, to czego naprawdę chciałem to usunąć akcenty nie akcentowane. Czy jest sposób na to zrobić z iconv lub jakimkolwiek innym narzędziem? –

+0

doskonały, teraz jest to, czego potrzebowałem, dziękuję - testowane z {echo 'Příliš žluťoučký kůň úpěl ďábelské ódy' | iconv -t 'ASCII // TRANSLIT'} –

+2

Świetne rozwiązanie; Niestety, nie działa poprawnie na OSX, prawdopodobnie z powodu błędu (jak w "OS X 10.9.2", który jest dołączony do 'GNU libiconv 1.11'):' echo 'ü' | iconv -f UTF8 -t ASCII // TRANSLIT' daje "u" zamiast "u". – mklement0

Powiązane problemy