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
)
