[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

This is an old revision of the document!


Table of Contents

Záludné chování či chyby základních programů

sort

Nastavení locale ovlivňuje výsledek

sort je známý tím, že třídí různě podle toho, jak máte nastavené locale. Jestli třídění proběhne korektně česky v českém locale jsem nestudoval.

Takto sort přesvědčíte, aby třídil podle bytů (čísel znaků), nikoli podle nějaké interpretace, jak asi vypadá obrázek písmene toho čísla:

env LC_ALL=C sort < vstup > výstup

Nastavení je dobré i pro případy, kdy vaše řádky obsahují různé symboly. Ukázkový rozdíl:

08:56$ sort < clipin
ahoj
<ahoj
"ahoj
08:56$ env LC_ALL=C sort < clipin
"ahoj
<ahoj
ahoj

Kódování souboru může vést ke špatným výsledkům

Pokud máte na konzoli UTF-8 a soubor clipin v ISO-8859-2, může vás sort -u nemile překvapit: neodliší ě od š nebo č.

23:01 sol8 ~$ iconv -f latin2 -t utf8 < clipin
ě
š
ě
č
23:01 sol8 ~$sort -u < clipin | iconv -f latin2 -t utf8
ě
23:00 sol8 ~$env LC_ALL=C sort -u < clipin | iconv -f latin2 -t utf8
š
č
ě

iconv jsem ve všech případech přidal, abych na konzoli vypsal soubor v UTF-8, jak konzole čeká.

uniq

Stejně jako sort, i uniq podléhá locale.

Stejně jako sort, i uniq se divně chová k souborům v nějakém kódování. (Ano, rozumíte správně, opravdu říkám, že uniq se chová divně ke všem souborům ;-))


[ Back to the navigation ] [ Back to the content ]