Velmi užitečná je konstrukce $'…' v bashi, provádí jen interpretaci zpětného lomítka podle standardu ANSI a jinak ničeho jiného:
09:22 obo-desktop ~$ echo $'\x41' A
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
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á.
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
)