ืืืื
ืืื ืืชืืื ืืชืกืจืื ืงืฆืจ ืฉืืื ืืืืจ ืืฉืื ืืืืข ืืชืืืช ืืื"ื ืขืืืืื ืฉืืชืงืืื ืืจืฉืืืช ืืืฉืชืืฉืื ืืจืฉืืืช ืืชืคืืฆื, ืืืฉืจ ืชืคืงืืื ืขืืืืื ืืชืงืืืื ืืืืืจ ืืืืงืช ืืฉืืื ืื ืืฉ. ืฉืชื ืืจืฉืืืืช ืืืฆืื ืืงืืืฆื ืืงืกื ืฉื Unicode UTF-8 ืื ืฉืืจ ืขื ืกืืืืืช ืงื ืืื ืืงืก.
ืชืึนืึถื mail.txt
ะะฒะฐะฝะพะฒ ะะฝะดัะตะน;[email protected]
ืชืึนืึถื buhg.txt
ะะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะผะฐะปัั
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบัะฐะฝะพะฒัะธัะฐ
ะะฒะฐะฝะพะฒ ะะฝะดัะตะน;ัะปะตัะฐัั
ะะฑะฐะบะฐะฝะพะฒ ะะธั
ะฐะธะป;ะผะฐะปัั
ืืืืืื, ืืงืืฆืื ืืืื ื ืืคื ืคืงืืืช Unix sort ืืืืืฉ ืืงืื ืฉื ืชืืื ืืช ืืื ืืงืก ืืืฆืืจืฃ, ืฉื ืืฉื ืืืืคื ืืืชื ืฆืคืื ืขื ืฉืืืื:
$> sort buhg.txt > buhg.srt
$> sort mail.txt > mail.srt
$> join buhg.srt mail.srt > result
join: buhg.srt:4: is not sorted: ะะฒะฐะฝะพะฒ ะะฝะดัะตะน;ัะปะตัะฐัั
ืืฆืืช ืชืืฆืืช ืืืืื ืืขืื ืืื ืืจืืชื ืฉืืืืคื ืืืื ืืืืื ื ืืื, ืืื ืืืงืจื ืฉื ืฆืืจืืคื ืืงืจืื ืฉื ืฉืืืช ืืฉืคืื ืืืจืื ืื ืฉืื, ืื ืงืืืช ืืืืช ืืคื ื ืืืืจืื:
$> sort buhg.txt
ะะฑะฐะบะฐะฝะพะฒ ะะธั
ะฐะธะป;ะผะฐะปัั
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบัะฐะฝะพะฒัะธัะฐ
ะะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะผะฐะปัั
ะะฒะฐะฝะพะฒ ะะฝะดัะตะน;ัะปะตัะฐัั
ื ืจืื ืืื ืชืงืืช ืืืื ืืืื ืืงืื ืื ืืื ืืืืื ืฉื ืคืืื ืืื ืืืืืืจืืชื ืืืืื. ืืจืืฉืื, ืืืืื, ืกืืืจ ืืืชืจ.
ืืื ื ืฉืื ืืช ืื ืืฆื ืืขืช ืขืชื ืืืฆืืจืฃ ืืืืชืืงื ื sort. ืืืื ื ื ืกื ืืคืชืืจ ืืช ืืืขืื ืืืืฆืขืืช ืืืืื ืืืขื. ืจืืฉืืช, ืืืื ื ืฉื ื ืืช ืืืงืื ื en_US ืขื ru_RU. ืืื ืืืืื, ืื ืืืื ืืกืคืืง ืืื ืืืืืืจ ืืช ืืฉืชื ื ืืกืืืื LC_COLLATE, ืืื ืื ื ืืืื ืืื ืขื ืืืืืช:
$> LANG=ru_RU.UTF-8 sort buhg.txt
ะะฑะฐะบะฐะฝะพะฒ ะะธั
ะฐะธะป;ะผะฐะปัั
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบัะฐะฝะพะฒัะธัะฐ
ะะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะผะฐะปัั
ะะฒะฐะฝะพะฒ ะะฝะดัะตะน;ัะปะตัะฐัั
ืฉืื ืืืจ ืื ืืฉืชื ื.
ืืืื ื ื ืกื ืืงืืื ืืืืฉ ืืช ืืงืืฆืื ืืงืืืื ืฉื ืืืื ืืืื:
$> iconv -f UTF-8 -t KOI8-R buhg.txt
| LANG=ru_RU.KOI8-R sort
| iconv -f KOI8-R -t UTF8
ืฉืื ืฉืื ืืืจ ืื ืืฉืชื ื.
ืืื ืื ืืขืฉืืช, ืชืฆืืจื ืืืคืฉ ืคืชืจืื ืืืื ืืจื ื. ืืื ืฉืื ืืืจ ืืฉืืจืืช ืขื ืฉืืืช ืืฉืคืื ืจืืกืืื, ืืื ืืฉ ืฉืืืืช ืขื ืืืืจืืืืช ืืืื ืืืจืืช. ืืืืืื, ืื ื ืืขืื:
ืืชืฉืืื ืืื ืกืื ืืจืืืช ืืื ืืงืื: ืืฉืชืืฉื ืืืืืืจ ืืืชืื ืช "ื" ืืืชื ืชืืื ืืืืฉืจ. ืืื ื ื ืกื:
$> LANG=C sort buhg.txt
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบัะฐะฝะพะฒัะธัะฐ
ะะฑะฐะบะฐะฝะพะฒ ะะธั
ะฐะธะป;ะผะฐะปัั
ะะฒะฐะฝะพะฒ ะะฝะดัะตะน;ัะปะตัะฐัั
ะะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะฐะดะฒะพะบะฐั
ืืฉืื ืืฉืชื ื. ืืืืื ืืืื ืืชืืืฆืื ืืกืืจ ืื ืืื, ืื ืื ืืืืงืื ื ืืืืืงื ืืื ืฉืื. ื ืืืืจ ืืืขืื ืืืงืืจืืช:
$> LANG=C sort buhg.txt > buhg.srt
$> LANG=C sort mail.txt > mail.srt
$> LANG=C join buhg.srt mail.srt > result
ืื ืขืื ืืื ืฉืืืืืช, ืืคื ืฉืืืืื ืืืื ืืจื ื. ืืืืช ืืืจืืช ืืืืงืื ื ืืฉืืจื ืืจืืฉืื ื.
ื ืจืื ืฉืืืขืื ื ืคืชืจื, ืืื ืืืชืจ ืืืืืื, ืืืื ื ื ืกื ืงืืืื ืจืืกื ืืืจ - Windows CP1251:
$> iconv -f UTF-8 -t CP1251 buhg.txt
| LANG=ru_RU.CP1251 sort
| iconv -f CP1251 -t UTF8
ืชืืฆืืช ืืืืื, ืืืจืื ืืคืื, ืชืชืืื ืืืืงืื "ื", ืืื ืืืืืื, ืืืชืื, ืคืืขืืช ืืื ืฉืืืืืช. ืกืื ืฉื ืืืกืืืงื.
ืื ื ืื ืืืื ืืืกืืืงื ืืชืื ืืช ืื ืืื ืืืจื ืืื ืืืคื ืขื ืืขืืืืช. ื ืฆืืจื ืืืืืง ืืจืฆืื ืืช ืืื ืื ืขืืื. sort ืืขื ืื ืื ืืฉืคืืข? LC_COLLATE .
ืืกืืฃ ืื ืกื ืืขื ืืช ืขื ืืฉืืืืช:
- ืืืืข ืฉืืืช ืืฉืคืื ื ืฉืืื ืืืื ื ืืฆืืจื ืฉืืืื?
- ืืืืข LANG=ru_RU.CP1251 ืืชืืจืจ ืืฉืืื ืขืจื LANG=C
- ืืื sort ะธ ืืืฆืืจืฃ ืจืขืืื ืืช ืฉืื ืื ืืืื ืกืืจ ืืืืจืืืืช ืืืืืื ืืช
- ืืื ืืฉ ืฉืืืืืช ืืื ืืืืืืืืช ืฉืื?
- ืกืืฃ ืกืืฃ ืืื ืืืืื ืืืจืืืืช ืืคื ืืืขื ืฉืื
ืืืื ืืืื ืืงืื
ืืชืื ื ืืจืืฉืื ื ืชืืื ืืื ืืื ื ืืก' 10 ืืืื
ืืืกืืฃ - "ืืฉืืืืช" ืืืจืืืืช ืืื ืืืกืืก ืืื ืืืืืจืืชื ืืืื. ืืืืืืจืืชืืื ืขืฆืื ืขืฉืืืื ืืืืืช ืฉืื ืื ("ืืืขื", "ืืืืื", "ืืืืจ"), ืืื ืืืื ืืฉืชืืฉื ืืืฉืืืื ืฉื ืืื ืืืจืืืืช ืืื ืืงืืืข ืืช ืืกืืจ ืฉืื ืื ืืืคืืขืื.
ืืืื ืืืจืืืืช ืืฉืคื ืืืขืืช ืืื ืืขืื ืืืจืืืช ืืืื. ืืคืืื ืืงืืืื ืืืชืื ืืคืฉืืืื ืืืืชืจ, ืกืืจ ืืืืชืืืช ืืืืคืืืช, ืืคืืื ืืืืคื ืืืฉืื ืฉืื ื ืืืืืคืืืช ืืืืื ื ืืื ืืื, ืื ืืขืื ืขืื ืืงื ื ืืื ืขื ืกืืจ ืืขืจืืื ืืืกืคืจืืื ืฉืืื ืืงืืืืืช ืืืืชืืืช ืืืื. ืื ืืืืคืืืช ืืืจืื ื ืืืืช ร ืขืืื ืืื ะ ะธ P, ืืืงืืืื CP850 ืืื ืขืืืจืช ืืื ืืื รฟ ะธ ร.
ืืชื ืืืื ืื ืกืืช ืืืคืฉื ืืงืืืื ืกืคืฆืืคื ืืืฉืงืื ืืืชืืืช "ืืืืืืืืืช" ืืืกืืืจืืช ืืกืืจ ืืืฉืื, โโืืคื ืฉื ืขืฉื ื-Unicode. ืงืืืืืื Utfxnumx, Utfxnumx ืื ืืืื ืืื KOI8-R (ืื ืืฉ ืฆืืจื ืืชืช-ืงืืืฆื ืืืืืืช ืฉื Unicode) ืืืชื ืืืฆืืืื ืืกืคืจืืื ืฉืื ืื ืฉื ืืืชืืืช, ืื ืืชืืืืก ืืืืชื ืืืื ืืื ืฉื ืืืืช ืืืกืืก.
ืืกืชืืจ ืฉืื ืื ื ืื ื ืืืืช ืกืืืื ืืืคืก, ืื ื ืืื ืืืงืฆืืช ืื ืกืืจ ืกืืืื ืืื ืืืจืกืื. ืืืืคืืืช ืืืืืืื ืฉืื ืื ืืืฉืชืืฉืื ืืืืชืืืช ืืืืช, ืกืืจ ืืืืชืืืช ืขืฉืื ืืืืืช ืฉืื ื. ืืืฉื, ืืฆืจืคืชืืช ร ืืืืฉื ืืงืฉืืจื ืืืืืื ืืืืจืืืช AE. ืื ืืจืืืืช ร ืืืื ืืืชื ื ืคืจื, ืืฉืจ ืืืืงื ืืืืจ Z. ืืื, ืื ืืกืฃ ืืงืฉืจืื ืืื ร ืืฉ ืืืชืืืช ืืืชืืืืช ืขื ืืกืคืจ ืกืืืื. ืื ืืืืคืืืช ืืฆ'ืื ืืฉ ืืืช Ch, ืืขืืื ืืื ืืื H ะธ I.
ืื ืืกืฃ ืืืืืืื ืืืืคืืืช, ืืฉ ืืกืืจืืช ืืืืืืืช ืืืจืืช ืืืฉืคืืขืืช ืขื ืืืืื. ืืืืืื ื ืฉืืืช ืืฉืืื: ืืืืื ืกืืจ ืฆืจืืืืช ืืืืคืืข ืืืืืื ืืืืื ืืืืจืืืืช ืืืืชืืืช ืืืืืืช ืืงืื ืืช? ืืืืื ืขืฉืื ืืืืืช ืืืฉืคืข ืื ืืืฉืืืืฉ ืืกืืื ื ืคืืกืืง. ืืกืคืจืืืช, ืกืืื ืฉืืื ืืคืื ืืฉืืฉ ืืชืืืืช ืืฉืคื ืืงืืจื (ืืชื ืืืื ืืืกืืงื?). ืืืงืจื ืื, ืืจืืจ ืฉืืื ืืงืืฅ ืืฉืคืื ืืงืืจื ืืืฉืืื ื ืคืจื ืืืืฅ ืืืืคืืืช, ืืื ืืื ืืืืื ืฉืืจืืช ืขื ืกืืื ื ืคืืกืืง ืืืจืื?
ืื ืืชืขืื ืขื ืืืื ืืืจืืืืช ืืฉืคืืช ืฉืื ืืช ืืืื ืืืืืจืืคืืืืช. ืฉืืื ืื ืฉืืฉืคืืช ืขื ืืืืื ืืชืืื ืืืืื ืืฉืืื ืื ืืืืขืื ืืืื, ืกืืืจ ืืื ืื ืฉืชืืืื ืืฉืืจืืช ืืืืืกื ืื ืืกืืจ ืงืจืืื, ืืืคืืื ืืืขืจืืืช ืืชืืื ืฉืืื ื ืืืคืืืชืืืช ืืฉ ืืจืืื ืืฉืืื ืืกืืจ ืฉืืจืืช ืชื ืืืจ ืชื . ืืืืืื, ื ืืชื ืืกืืจ ืืืจืืืืืคืื ืืคื ืกืื ืื (
ืืืชืืกืก ืขื ืืชืืื ืืช ืืืคืืจืืืช ืืขืื, ืืืืฉื ืืืจืืฉืืช ืืืกืืกืืืช ืืืฉืืืืช ืืืจืืืืช ืืืืืกืกืืช ืขื ืืืืืืช Unicode:
- ืืฉืืืืช ืืืจืืืืช ืืื ื ืชืืืื ืืืืงืื ืืชืืืื ืืืืืช ืืงืื;
- ืจืฆืคืื ืฉื ืชืืืื ืืืืฆืจืื ืชื ืืืื ืืฆืืืฆืืื ืืฆืืจื ืงื ืื ืืช (A + ืืขืืืื ืืขืืืื ืืื ืืื ร );
- ืืืฉืจ ืืฉืืืื ืืืจืืืืช, ืชื ื ืืฉื ืืืงืฉืจ ืฉื ืืืืจืืืช ืืืืืืช ืืฆืืจื ืืฉืืืืช ืขื ืฉืื ืืชืื ืืืืืื ืืืช ืฉื ืืฉืืืื (Ch ืืฆ'ืืืช) ืื ืืืืืง ืืืื (ร ืืฆืจืคืชืืช);
- ืืฉ ืืืืืืจ ืืช ืื ืืืืคืืื ืื ืืืืืืืื (ืืืคืืืช, ืืืชืืืช ืจืืฉืืืช/ืงืื ืืช, ืกืืื ื ืคืืกืืง, ืกืืจ ืกืืื ืืชืืื) ืขื ืืืงืฆืื ืืื ืืช ืฉื ืืกืืจ (ืืืืื'ื);
- ืืฉืืืื ืืฉืืื ืื ืจืง ืืืืื, ืืื ืื ืืืงืืืืช ืจืืื ืืืจืื, ืืืฉื ืืฆืืื ืืืืื ืฉืืจืืช (ืืืืคืช {A... z} ื ืืืืื);
- ืืืฉืืืื ืฆืจืืื ืืืืขืฉืืช ืื ืืืจ.
ืื ืืกืฃ, ืืืืจื ืืื"ื ืืืืฉื ืืืคืืื ื ืืฉืืืื ืฉืืคืชืื ืืืืืจืืชืืื ืื ืฆืจืืืื ืืืกืชืื ืขืืืื:
- ืืืืืจืืชื ืืืฉืืืื ืื ืฆืจืื ืืืจืืฉ ืงืืืฆื ื ืคืจืืช ืฉื ืชืืืื ืขืืืจ ืื ืฉืคื (ืฉืคืืช ืจืืกืืช ืืืืงืจืืื ืืช ืืืืงืืช ืืช ืจืื ืืชืืืื ืืงืืจืืืืื);
- ืืืฉืืืื ืื ืฆืจืืื ืืืกืชืื ืขื ืกืืจ ืืชืืืื ืืืืืืืช Unicode;
- ืืฉืงื ืืืจืืืช ืื ืืืืจ ืืืืืช ืชืืื ื ืฉื ืืืืจืืืช, ืฉืื ืืืืชื ืืืจืืืช ืืืงืฉืจืื ืชืจืืืชืืื ืฉืื ืื ืืืืืื ืืืืืช ืืฉืงืืื ืฉืื ืื;
- ืืฉืงืื ืืฉืืจืืช ืืืืืื ืืืฉืชื ืืช ืืขืช ืืืืื ืื ืคืืฆืื (ื x < y ืื ืื ื ืืืข ืืื xz < yz);
- ืืืจืืืืช ืฉืื ืืช ืืขืืืช ืืฉืงื ืืื ื ืืฉืืืช ืฉืืืช ืื ืงืืืช ืืืื ืฉื ืืืืืจืืชื ืืืืื. ืืฆืืช ืกืืจ ื ืืกืฃ ืฉื ืืืจืืืืช ืืืื ืืคืฉืจืืช, ืื ืืื ืขืืืื ืืคืืืข ืืืืฆืืขืื;
- ืืืืื ืืืื ืืืืจ, ื ืืชื ืืืืืืฃ ืฉืืจืืช ืขื ืืืชื ืืฉืงืืื. ืขืืืื ืืื ืชืืื ื ืฉื ืืืืืจืืชื ืืืื ืกืคืฆืืคื, ืืื ืชืืื ื ืฉื ืืืืืจืืชื ืืฉืืืืช ืืืจืืืืช (ืจืื ืืคืกืงื ืืงืืืืช);
- ืืืื ืืืืื ืขืฉืืืื ืืืฉืชื ืืช ืขื ืืืื ืืืฉืจ ืืกืืจืืช ืชืจืืืชืืืช ืืชืขืื ืืช/ืืฉืชื ืืช.
ืืื ืื ื ืงืืข ืฉืืืืืจืืชื ืืืฉืืืื ืืื ื ืืืืข ืืืจ ืขื ืืกืื ืืืงื ืฉื ืืืืจืืืืช ืืืขืืืืืช. ืืคืืื, ืืื ืืืฉืืืช ืืืจืืืืช ืืืืจืืืืช ืืกืคืจืืช ืืืื ืืืกืคืจืื, ืืืจืฉืืืืช ืฉื ืฉืืืช ืืื ืืืืช ืืช ืืืืืจ (ืืืืืืก, ื).
ืขื ืื ืช ืืกืคืง ืืช ืื ืืืจืืฉืืช ืืืื, ืืืฆืข ืืืืืจืืชื ืืืื ืืืืืืช ืืจืืื ืจืืืช (ืืืขืฉื ืืจืืข ืจืืืช).
ืืขืืจ, ืืชืืืื ืืืืจืืืช ืืฆืืืฆืืื ืืฆืืจื ืงื ืื ืืช ืืืงืืืฆืื ืืืืืืืช ืืฉืืืื. ืืื ืืืืืช ืืฉืืืื ืืืงืฆืื ืืกืคืจ ืืฉืงืืื ืืชืืืืื ืืืกืคืจ ืจืืืช ืืฉืืืื. ืืืฉืงืืื ืฉื ืืืืืืช ืืฉืืืื ืื ืจืืืืื ืฉื ืงืืืฆืืช ืืกืืืจืืช (ืืืงืจื ืื, ืืกืคืจืื ืฉืืืื) ืฉื ืืชื ืืืฉืืืช ืขืืืจ ืคืืืช ืื ืืืชืจ. ืืฉืืขืืช ืืืืืืช ืืชืขืืื (0x0) ืคืืจืืฉื ืฉืืจืืช ืืืฉืืืื ืืืงืืืื ืืืืื ืื ืืื ื ืืขืืจืืช ืืืฉืืืื. ื ืืชื ืืืืืจ ืขื ืืฉืืืื ืฉื ืืืชืจืื ืืกืคืจ ืคืขืืื, ืชืื ืฉืืืืฉ ืืืฉืงืืื ืฉื ืืจืืืช ืืืชืืืืืช. ืืื ืจืื, ืืืฉืงืืืืช ืฉื ืืืืืืช ืืืฉืืืื ืฉื ืฉืชื ืฉืืจืืช ืืืฉืืืช ืื ืืื ืืจืฆืฃ.
ืืืืฉืืืื ืฉืื ืื ืฉื ืืืืืืจืืชื ืืืกืืจืืช ืืืืืืืช ืฉืื ืืช, ืขืจืื ืืืงืืืื ืขืฉืืืื ืืืืืช ืฉืื ืื, ืื ืชืงื Unicode ืืืื ืืืืช ืืฉืงืืื ืืกืืกืืช - "ืืืืช ืืจืืจืช ืืืืื ืฉื ืืืกืืฃ ืจืืืื Unicode" (DUCET). ืื ื ืจืืฆื ืืฆืืื ืฉืืืืจืช ืืืฉืชื ื LC_COLLATE ืืืืื ืืืขืฉื ืืื ืืืงืฆืื ืืืืืจืช ืืืืช ืืืฉืงื ืืคืื ืงืฆืืืช ืืฉืืืืช ืืืืชืจืื.
ืืงืืื ืืฉืงื DUCET ืืกืืืจ ืืืืคื ืืื:
- ืืจืื ืืจืืฉืื ื, ืื ืืืืชืืืช ืืฆืืืฆืืืช ืืืืชื ืจืืฉืืืช, ืกืืื ื ืคืืกืืง ื ืืืงืื, ืกืืื ื ืคืืกืืง (ืื ืืืื) ืืชืขืืืื;
- ืืจืื ืืฉื ืืื, ืจืง ืืืืงืจืืืื ื ืืงืืื ืืืฉืืื;
- ืืจืื ืืฉืืืฉืืช, ืจืง ืืืงืจื ื ืืงื ืืืฉืืื;
- ืืจืื ืืจืืืขืืช, ืจืง ืกืืื ื ืคืืกืืง ื ืืงืืื ืืืฉืืื.
ืืืฉืืืื ืืชืืฆืขืช ืืืื ืืขืืจืื: ืจืืฉืืช, ืืฉืืืื ืืช ืืืงืืืื ืฉื ืืจืื ืืจืืฉืื ื; ืื ืืืฉืงืืืืช ืืืคืคืืช, ืืื ืืชืืฆืขืช ืืฉืืืื ืืืืจืช ืขื ืืืฉืงืืืืช ืืจืื ืืฉื ืืื; ืืื ืืืื ืฉืืืฉ ืืจืืืขื.
ืืืฉืืืื ืืกืชืืืืช ืืืฉืจ ืืฉืืจืืช ืืืืืืช ืืืืืืช ืืฉืืืื ืชืืืืืช ืขื ืืฉืงืืื ืฉืื ืื. ืฉืืจืืช ืืขืืืช ืืฉืงื ืฉืืื ืืื ืืจืืข ืืจืืืช ื ืืฉืืืช ืฉืืืช ืื ืืื.
ืืืืืืจืืชื ืืื (ืขื ืฉืื ืคืจืืื ืืื ืืื ื ืืกืคืื) ื ืชื ืืช ืืฉื ืืืื ืืก' 10 - "ืืืืืจืืชื ืืืกืืฃ ืืื ืืงืื" (ACU).
ืื ืืืงืื ืฉืื ืืชื ืืืืช ืืืืื ืืืืืืื ืฉืื ื ืืืคืืช ืงืฆืช ืืืชืจ ืืจืืจื. ืื ืืืื ื ืืื ืืืฉืืืช ืืืชื ืขื ืชืงื Unicode.
ืืืืืงืช ืืืฉืืืื ACU ืืฉ ืืืืื
ืืืืงื ืืื ืืช ืฉืืฉืืจืืช ืืืืื ืืช ืืืืื ืืคื DUCET ืืืื ืื ืืืืืข, ืืื, ืืืืื ื, ืืฉ ืืืฉืื ืืืืคืช ืฉื ืืกืคืจืืื ืืขืืืื ืขื Unicode - "
ืืืชืจ ืืืื ืืจื ื ืฉื ืกืคืจืืื ืื, ืฉืคืืชื ื ืืื, ืืฉื ื ืืคื ืืืืื, ืืืื
ะะฑะฐะบะฐะฝะพะฒ ะะธั
ะฐะธะป;ะผะฐะปัั
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบัะฐะฝะพะฒัะธัะฐ
ะะฒะฐะฝะพะฒ ะะฝะดัะตะน;ัะปะตัะฐัั
ะะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะฐะดะฒะพะบะฐั
ืืจื ืืื, ืืืชืจ ืืืืืงื ืืืืคืื ื ืืจืฅ ื ืืชื ืืืฆืื ืืืืจื ืฉื ืืืืืจืืชื ืืืฉืืืื ืืขืช ืขืืืื ืกืืื ื ืคืืกืืง. ืืืืืืืืช
ืืื ืืงืื ืขืืจ ืื ื, ืืื ืืคืฉ ืกืืืืช ืืืชื ืืืืช ืืืืจื sort ะฒ ืืื ืืงืก ืืฆืืจื ืืืืช ืืืงืื ืืืจ.
ืืืื ื-glibc
ืชืฆืืื ืืืืจื ืฉื ืงืืื ืืืงืืจ ืฉื ืืฉืืจืืช sort ืฉื GNU Core Utils ืืจืื ืื ืืืื ืืฉืืจืืช ืขืฆืื, ืืืงืืืืฆืื ืืกืชืืืช ืืืืคืกืช ืืขืจื ืื ืืืื ืฉื ืืืฉืชื ื LC_COLLATE ืืืฉืจ ืคืืขื ืืืฆื ื ืืคืื ืืืืื:
$ sort --debug buhg.txt > buhg.srt
sort: using โen_US.UTF8โ sorting rules
ืืฉืืืืืช ืืืจืืืืช ืืชืืฆืขืืช ืืืืฆืขืืช ืืคืื ืงืฆืื ืืกืื ืืจืืืช strcoll, ืื ืฉืืืืจ ืฉืื ืื ืฉืืขื ืืื ื ืืฆื ืืกืคืจืืื glibc.
ืขื ืืืงื ืคืจืืืืงื glibc ืืืงืืฉ ืืืฉืืืืช ืืืจืืืืช
ืืืืืข ืืืขื ืืื ืืืืชืจ ืขื ืืืงื ืืื ืงืืฉืืจ ื
ืืขืช, ืืฉืืฉ ืื ื ืืช ืื ืืืืืข ืขื ืืืืืืจืืชื ืืืืืืืช ืืขืืจ, ื ืืื ืืืืืจ ืืืขืื ืืืงืืจืืช ืืืืืื ืืืฆื ืืืืื ื ืืื ืืืจืืืืช ืืืงืื ืืจืืกื.
ISO 14651 / 14652
ืงืื ืืืงืืจ ืฉื ืืืืื ืื ืื ื ืืขืื ืืื ืื CTT ืืจืื ืืืคืฆืืช ืืื ืืงืก ื ืืฆื ืืงืืืื /usr/share/i18n/locales/. ืืืืื ืขืฆืื ื ืืฆืืช ืืงืืืฅ iso14651_t1_common. ืื ืื ืื ืืืืช ืืงืืฆืื ืืขืชืง ืืช iso14651_t1_common ืืืื ืืงืืืฅ iso14651_t1, ืืฉืจ, ืืชืืจื, ื ืืื ืืชืืงืื ืืืืืืื, ืืจืืืช en_US ะธ ru_RU. ืืจืื ืืืคืฆืืช ืืื ืืงืก ืื ืงืืฆื ืืืงืืจ ืืืืืื ืืืชืงื ื ืืืกืืกืืช, ืื ืื ืื ืืื ื ืงืืืืื, ืชืฆืืจื ืืืชืงืื ืืืืื ื ืืกืคืช ืืืืคืฆื.
ืืื ื ืืงืืืฅ iso14651_t1 ืืืื ื ืจืื ืืืื ืืืืืื, ืขื ืืืืื ืื ืืจืืจืื ืืื ืืืช ืฉืืืช, ืืื ืื ืืกืชืืืื ืขื ืื, ืืื ืื ืคืฉืื. ืืืื ื ืืชืืืจ ืืชืงื ISO 14652, ืขืืชืง ืฉืื ื ืืชื ืืืืจืื ืืืืชืจ
ืืื ื ืืงืืืฅ ื ืจืื ืื:
ืืืจืืจืช ืืืื, ืืชื ืืฉืืฉ ืืชื ืืจืืื, ืืกืืฃ ืืฉืืจื ืืืจื ืืชื # ืืื ืืขืจื. ื ืืชื ืืืืืืจ ืืืืฉ ืืช ืฉื ื ืืกืืืื, ืืื ืื ืฉื ืขืฉื ืืืจืกื ืืืืฉื ืฉื ืืืืื:
escape_char /
comment_char %
ืืงืืืฅ ืืืื ืืกืืืื ืื ืืคืืจืื ืื (ืืืคื x - ืกืคืจื ืืงืกืืฆืืืืืช). ืืื ืืืืฆืื ืืืงืกืืฆืืืื ืฉื ื ืงืืืืช ืงืื Unicode ืืงืืืื UCS-4 (UTF-32). ืื ืฉืืจ ืืืืื ืืื ืืกืืืจืืื ืืืืืช (ืืืื , ืืืืืื) ื ืืฉืืื ืงืืืขื ืืืจืืืช ืคืฉืืืื ืฉืืฉ ืืื ืืขื ืืฉืืขืืช ืืืืฅ ืืืงืฉืจ.
ืืืจืืืช LC_COLLATE ืืืืจ ืื ื ืฉืืืืจ ืืื ืืชืืืืื ืื ืชืื ืื ืืืชืืจืื ืืช ืืืฉืืืื ืฉื ืืืจืืืืช.
ืจืืฉืืช, ืืฆืืื ืื ืฉืืืช ืขืืืจ ืืืฉืงืืืืช ืืืืืช ืืืฉืืืื ืืฉืืืช ืขืืืจ ืฆืืจืืคื ืืกืืืื. ืืืืคื ืืืื, ืฉื ื ืกืืื ืืฉืืืช ืฉืืืืื ืืฉืชื ืืฉืืืืช ืฉืื ืืช, ืื ืืงืืืฅ ืืคืืขื ืื ืืขืืจืืื. ืฉืืืช ืืืฉืงืืืืช ืืฆืืื ืื ืขื ืืื ืืืืช ืืืคืชื ืืืกืืฃ-ืกืื (ืชื ืืฉืืืื) ืื ืืขืช ืืืฉืืืื, ืชืืื Unicode ืืขืื ืืฉืงื ืืื ืืืืฉืื ืืชืืืื ืฉืืืช ืขืจื.
ืืืืจื ืืืืื ืฉื ืืงืืข ืืืจืกื ืื ืืืืืช ืฉื ืืงืืืฅ ืืื ื-900 ืฉืืจืืช. ืฉืืคืชื ืืืืืืืช ืืืื ืืงืืืืช ืืื ืืืจืืืช ืืช ืืฉืจืืจืืชืืืช ืฉื ืฉืืืช ืืืื ืกืืืื ืฉื ืชืืืืจ.
LC_COLLATE
collating-symbol <RES-1>
collating-symbol <BLK>
collating-symbol <MIN>
collating-symbol <WIDE>
...
collating-symbol <ARABIC>
collating-symbol <ETHPC>
collating-symbol <OSMANYA>
...
collating-symbol <S1D000>..<S1D35F>
collating-symbol <SFFFF> % Guaranteed largest symbol value. Keep at end of this list
...
collating-element <U0413_0301> from "<U0413><U0301>"
collating-element <U0413_0341> from "<U0413><U0341>"
- ืืืกืืฃ-ืกืื ืจืืฉื ืืืจืืืช ืืืกืื ืื ืืืืืช ืืฉืืืช ืฉื ืกืืืืืช
- ืืืกืืฃ-ืกืื .. ืจืืฉื ืจืฆืฃ ืฉื ืฉืืืช ืืืืจืื ืืงืืืืืช S ืืกืืืืช ืืกืคืจืืช ืืงืกืืฆืืืืืช ื 1D000 ะดะพ 1D35F.
- ืค ืค ืค ืค ะฒ ืืืกืืฃ-ืกืื ื ืจืื ืืื ืืกืคืจ ืฉืื ืืืื ืืื ืกืืื ืืืงืกืืฆืืืื, ืืื ืื ืจืง ืฉื ืฉืขืฉืื ืืืืจืืืช ืืื
- ืฉื ืคืืจืืฉื ื ืงืืืช ืงืื ืืงืืืื UCS-4
- ืืืื ื ืืืกืืฃ ื " " ืจืืฉื ืฉื ืืืฉ ืืืื ื ืงืืืืช Unicode.
ืืืืจ ืืืืจืช ืฉืืืช ืืืฉืงืืืืช, ืืฆืืื ื ืืืฉืงืืืืช ืืคืืขื. ืืืืืื ืฉืจืง ืืืกืื ืืืืืื ืืคืืืช ืืฉืืืื ืืืฉืืืื, ืืืฉืงืืืืช ื ืงืืขืืช ืขื ืืื ืจืฆืฃ ืคืฉืื ืฉื ืฉืืืช ืจืืฉืื. ืืืฉืงืืืืช ื"ืงืืืช" ืืืชืจ ืืืคืืขืืช ืชืืืื, ืืืืืจ ืืื ื"ืืืืืช" ืืืชืจ. ืืจืฉื ืื ืืืืืืจ ืืื ืฉืืื ืชื Unicode ืืืงืฆืื ืืจืืขื ืืฉืงืืื ืฉืื ืื. ืืื ืื ืืฉืืืืื ืืจืฆืฃ ืืกืืืจ ืืื. ืืชืืืืจืื, ืื ืฉื ืกืืื ืืืื ืืฉืืฉ ืืื ืืืช ืืืจืืข ืืจืืืช, ืื ืืขืจืืช ืืฆืืืขืืช ืขื ืื ืฉืืืคืชืืื ืืคืจืืืื ืฉืืืช ืืจืืืช.
% Symbolic weight assignments
% Third-level weight assignments
<RES-1>
<BLK>
<MIN>
<WIDE>
...
% Second-level weight assignments
<BASE>
<LOWLINE> % COMBINING LOW LINE
<PSILI> % COMBINING COMMA ABOVE
<DASIA> % COMBINING REVERSED COMMA ABOVE
...
% First-level weight assignments
<S0009> % HORIZONTAL TABULATION
<S000A> % LINE FEED
<S000B> % VERTICAL TABULATION
...
<S0434> % CYRILLIC SMALL LETTER DE
<S0501> % CYRILLIC SMALL LETTER KOMI DE
<S0452> % CYRILLIC SMALL LETTER DJE
<S0503> % CYRILLIC SMALL LETTER KOMI DJE
<S0453> % CYRILLIC SMALL LETTER GJE
<S0499> % CYRILLIC SMALL LETTER ZE WITH DESCENDER
<S0435> % CYRILLIC SMALL LETTER IE
<S04D7> % CYRILLIC SMALL LETTER IE WITH BREVE
<S0454> % CYRILLIC SMALL LETTER UKRAINIAN IE
<S0436> % CYRILLIC SMALL LETTER ZHE
ืืืกืืฃ, ืืืืช ืืืฉืงืืืืช ืืคืืขื.
ืงืืข ืืืฉืงืืืืช ืืืงืฃ ืืฉืืจืืช ืืืืืช ืืคืชื order_start ะธ order_end. ืืคืฉืจืืืืช ื ืืกืคืืช order_start ืืงืืืข ืืืืื ืืืืื ืฉืืจืืช ื ืกืจืงืืช ืืื ืจืืช ืืฉืืืื. ืืืืจืช ืืจืืจืช ืืืืื ืืื ืงึธืึดืืึธื. ืืืฃ ืืงืืข ืืืจืื ืืฉืืจืืช ืืืืืืืช ืืช ืงืื ืืกืื ืืืช ืืจืืขืช ืืฉืงืืื. ืงืื ืืชื ืืืื ืืืืืช ืืืืฆื ืขื ืืื ืืชื ืขืฆืื, ื ืงืืืช ืงืื ืื ืฉื ืกืืื ืฉืืืืืจ ืงืืื ืืื. ื ืืชื ืืชืช ืืฉืงืืื ืื ืืฉืืืช ืกืืืืื, ืื ืงืืืืช ืงืื ืื ืืกืืืื ืขืฆืื. ืื ื ืขืฉื ืฉืืืืฉ ืื ืงืืืืช ืงืื ืื ืชืืืื, ืืฉืงืื ืืื ืืขืจื ืืืกืคืจื ืฉื ื ืงืืืช ืืงืื (ืืืงืื ืืืืืช Unicode). ืชืืืื ืฉืื ืฆืืื ื ืืืคืืจืฉ (ืืคื ืฉืืื ืชื) ื ืืฉืืืช ืืืืงืฆืืช ืืืืื ืขื ืืฉืงื ืจืืฉื ืืชืืื ืืช ืืืืงืื ืืืืืช Unicode. ืขืจื ืืฉืงื ืืืืื ืืืชืขืื ืคืืจืืฉื ืฉืืชืขืืืื ืืืกืื ืืจืืช ืืืฉืืืื ืืืชืืืื.
ืืื ืืืืืื ืืช ืืื ื ืืืืื ืืื, ืืืจืชื ืฉืืืฉื ืฉืืจืื ืืจืืจืื ืืืื:
- ืืืืืืช ืฉืืชืขืืืืช ืืื ืืืืืืื
- ืกืืืื ืฉืืืื ืืืกืคืจ ืฉืืืฉ ืืฉืชื ืืจืืืช ืืจืืฉืื ืืช
- ืชืืืืชื ืฉื ืืืืคืืืช ืืงืืจืืื, ืฉืืื ื ืืืื ืืืืงืจืืืื, ืืืื ืืืืื ืืขืืงืจ ืืคื ืืจืื ืืจืืฉืื ื ืืืฉืืืฉืืช.
order_start forward;forward;forward;forward,position
<U0000> IGNORE;IGNORE;IGNORE;IGNORE % NULL (in 6429)
<U0001> IGNORE;IGNORE;IGNORE;IGNORE % START OF HEADING (in 6429)
<U0002> IGNORE;IGNORE;IGNORE;IGNORE % START OF TEXT (in 6429)
...
<U0033> <S0033>;<BASE>;<MIN>;<U0033> % DIGIT THREE
<UFF13> <S0033>;<BASE>;<WIDE>;<UFF13> % FULLWIDTH DIGIT THREE
<U2476> <S0033>;<BASE>;<COMPAT>;<U2476> % PARENTHESIZED DIGIT THREE
<U248A> <S0033>;<BASE>;<COMPAT>;<U248A> % DIGIT THREE FULL STOP
<U1D7D1> <S0033>;<BASE>;<FONT>;<U1D7D1> % MATHEMATICAL BOLD DIGIT THREE
...
<U0430> <S0430>;<BASE>;<MIN>;<U0430> % CYRILLIC SMALL LETTER A
<U0410> <S0430>;<BASE>;<CAP>;<U0410> % CYRILLIC CAPITAL LETTER A
<U04D1> <S04D1>;<BASE>;<MIN>;<U04D1> % CYRILLIC SMALL LETTER A WITH BREVE
<U0430_0306> <S04D1>;<BASE>;<MIN>;<U04D1> % CYRILLIC SMALL LETTER A WITH BREVE
...
<U0431> <S0431>;<BASE>;<MIN>;<U0431> % CYRILLIC SMALL LETTER BE
<U0411> <S0431>;<BASE>;<CAP>;<U0411> % CYRILLIC CAPITAL LETTER BE
<U0432> <S0432>;<BASE>;<MIN>;<U0432> % CYRILLIC SMALL LETTER VE
<U0412> <S0432>;<BASE>;<CAP>;<U0412> % CYRILLIC CAPITAL LETTER VE
...
order_end
ืืขืช ื ืืชื ืืืืืจ ืืืืื ืืืืืืืืช ืืชืืืืช ืืืืืจ. ืืืืจื ื ืืฆื ืืืืง ืืื ืฉื ืืืืช ืืืฉืงืืืืช:
<U0020> IGNORE;IGNORE;IGNORE;<U0020> % SPACE
<U0021> IGNORE;IGNORE;IGNORE;<U0021> % EXCLAMATION MARK
<U0022> IGNORE;IGNORE;IGNORE;<U0022> % QUOTATION MARK
...
ื ืืชื ืืจืืืช ืฉืืืืื ืื ืกืืื ื ืืคืืกืืง ืืืืืื ASCII (ืืืื ืจืืื) ืืืขื ืชืืื ืืชืขืืืื ืืขืช ืืฉืืืืช ืืืจืืืืช. ืืืฆืื ืืืืคื ืืืืืืื ืื ืงืืืื ืฉืืชืืืืื ืืื ืืืจ ืืืื ืกืืื ื ืคืืกืืง ืฉื ืืฆืื ืืืืงืืืื ืชืืืืื. ืืฉืืจืืช ืืืืืืื ืฉืื (ืืืืจ ืืืื) ืขืืืจ ืืืืืจืืชื ืืืฉืืืื ื ืจืืืช ืื:
ะะฑะฐะบะฐะฝะพะฒะะธั
ะฐะธะปะผะฐะปัั
ะะปะบะธะฝะฐะญะปะปะฐะบัะฐะฝะพะฒัะธัะฐ
ะะฒะฐะฝะพะฒะฐะะปะปะฐะผะฐะปัั
ะะฒะฐะฝะพะฒะะฝะดัะตะนัะปะตัะฐัั
ืืืชืืฉื ืืื ืฉืืืืืช ืืกืืืืืช, ืืืชืืืช ืืืืืืช ืืจืืกืืช ืืืืช ืืืจื ืืืชืืืช ืงืื ืืช (ืืจืื ืืฉืืืฉืืช ืืื ืืืชืจ ื ), ืืืืื ื ืจืื ื ืืื ืืืืืืื.
ืืขืช ืืืืจืช ืืฉืชื ื LC_COLLATE=C ื ืืขื ืืืื ืืืืืืช ืืืฆืืื ืช ืืฉืืืื ืฉื ืืชืื-ืืชืื
static const uint32_t collseqwc[] =
{
8, 1, 8, 0x0, 0xff,
/* 1st-level table */
6 * sizeof (uint32_t),
/* 2nd-level table */
7 * sizeof (uint32_t),
/* 3rd-level table */
L'x00', L'x01', L'x02', L'x03', L'x04', L'x05', L'x06', L'x07',
L'x08', L'x09', L'x0a', L'x0b', L'x0c', L'x0d', L'x0e', L'x0f',
...
L'xf8', L'xf9', L'xfa', L'xfb', L'xfc', L'xfd', L'xfe', L'xff'
};
ืืืืืื ืฉื-Unicode ื ืงืืืช ืืงืื ะ ืืืืขื ืืคื ื A, ืืืืจืืืืช ืืืืื ืืช ืืืชืื.
ืืงืกื ืืืืืืืช ืืื ืืจืืืช
ืืจืืจ ืฉืืฉืืืืช ืืืจืืืืช ืืื ืคืขืืื ื ืคืืฆื ืืืืชืจ, ืื ืืชืื ืืืืืืช CTT ืืืื ืื ืืงืจ. ืืื ืืืืขื ืืช ืืืืฉื ืืืืื, ืืื ืืืจืืืช ืืฆืืจื ืืื ืืจืืช ืขื ืืคืงืืื localdef.
ืงืืืฆื localdef ืืงืื ืืคืจืืืจืื ืงืืืฅ ืขื ืืืืช ืืืคืืื ืื ืืืืืืื (ืืคืฉืจืืช -i), ืฉืื ืื ืืชืืืื ืืืืฆืืื ืขื ืืื ื ืงืืืืช Unicode, ืืงืืืฅ ืืชืืื ืืื ื ืงืืืืช Unicode ืืชืืืื ืฉื ืงืืืื ืกืคืฆืืคื (ืืคืฉืจืืช -f). ืืชืืฆืื ืืืขืืืื, ื ืืฆืจืื ืงืืฆืื ืืื ืืจืืื ืขืืืจ ืืืงืื ืขื ืืฉื ืฉืฆืืื ืืคืจืืืจ ืืืืจืื.
ืืืืืง ืชืืื ืืฉื ื ืคืืจืืืื ืฉื ืงืืฆืื ืืื ืืจืืื: "ืืกืืจืชื" ื"ืืืืจื ื".
ืืคืืจืื ืืืกืืจืชื ืืืืจ ืฉืฉื ืืืงืื ืืื ืืฉื ืฉื ืกืคืจืืืช ืืืฉื ื ื /usr/lib/locale/. ืกืคืจืืืช ืืฉื ื ืื ืืืืกื ืช ืงืืฆืื ืืื ืืจืืื LC_COLLATE, LC_CTYPE, LC_TIME ืืืืื. ืงืึนืึถืฅ LC_IDENTIFICATION ืืืื ืืช ืืฉื ืืจืฉืื ืฉื ืืืงืื (ืฉืขืฉืื ืืืืืช ืฉืื ื ืืฉื ืืกืคืจืืื) ืืืขืจืืช.
ืืคืืจืื ืืืืืจื ื ืืืื ืืืกืื ืื ืืืืืจืื ืืืจืืืื ืืื /usr/lib/locale/locale-archive, ืืฉืจ ืืืืคื ืืืืืจืื ืืืืจืืืืื ืฉื ืื ืืชืืืืืื ืืืฉืชืืฉืื glibc. ืฉื ืืืงืื ืืคืืจืื ืืืืืจื ื ืืคืืฃ ืืงื ืื ืืืฆืื ืืกืืืืช - ืจืง ืืกืคืจืื ืืืืชืืืช ืืืคืืชืื ืืืืชืืืช ืงืื ืืช ื ืฉืืจืืช ืืฉืืืช ืืงืืืื. ืื ru_RU.KOI8-R, ืืืฉืืจ ืืฉื ru_RU.koi8r.
ืงืืฆื ืงืื ืืชืืฆืขืื ืืืืคืืฉ ืืกืคืจืืื ืื ืืืืืช, ืืื ืื ืืกืคืจืืืช /usr/share/i18n/locales/ ะธ /usr/share/i18n/charmaps/ ืขืืืจ ืงืืฆืื CTT ืืงืืฆื ืงืืืื, ืืืชืืื.
ืืืฉื, ืืคืงืืื
localedef -i ru_RU -f MAC-CYRILLIC ru_RU.MAC-CYRILLIC
ืืจืืื ืืช ืืงืืืฅ /usr/share/i18n/locales/ru_RU ืืืืฆืขืืช ืงืืืฅ ืงืืืื /usr/share/i18n/charmaps/MAC-CYRILLIC.gz ืืฉืืืจ ืืช ืืชืืฆืื ื /usr/lib/locale/locale-archive ืชืืช ืืฉื ru_RU.maccyrillic
ืื ืชืืืืจ ืืช ืืืฉืชื ื LANG = en_US.UTF-8 ัะพ glibc ืืืคืฉ ืงืืฆืื ืืื ืืจืืื ืืงืืืืื ืืจืฆืฃ ืืื ืฉื ืงืืฆืื ืืกืคืจืืืช:
/usr/lib/locale/locale-archive
/usr/lib/locale/en_US.UTF-8/
/usr/lib/locale/en_US/
/usr/lib/locale/enUTF-8/
/usr/lib/locale/en/
ืื ืืงืื ืืชืจืืฉ ืืคืืจืืืื ืืกืืจืชืืื ืืืืืจื ืืื ืืืื, ื ืืชื ืช ืขืืืคืืช ืืื ืืืืืจื ื.
ืืชื ืืืื ืืืฆืื ืืช ืจืฉืืืช ืืืงืืืืช ืืงืืืคืืืืื ืขื ืืคืงืืื ืืืืจ - ื.
ืืื ืช ืืืืช ืืืฉืืืื ืฉืื
ืืขืช, ืืืืฉ ืืืืข, ืืชื ืืืื ืืืฆืืจ ืืืืช ืืฉืืืืช ืืืจืืืืช ืืืืืืืืืช ืฉืื. ืืืื ืื ืฆืจืืื ืืืฉืืืช ื ืืื ืืืชืืืช ืจืืกืืืช, ืืืื ืืืืช ะ, ืืื ืืื ืืช ืืงืืช ืืืฉืืื ืกืืื ื ืคืืกืืง ืืืชืื ืืืืื ASCII.
ืชืืืื ืืื ืช ืืืืช ืืืื ืืฉืื ืืืจืื ืืฉื ื ืฉืืืื: ืขืจืืืช ืืืืช ืืืฉืงืืืืช ืืืจืืืชื ืืฆืืจื ืืื ืืจืืช ืขื ืืคืงืืื localdef.
ืขื ืื ืช ืฉืืืืช ืืืฉืืืื ืชืืื ืืืชืืืช ืืขืืืืืช ืขืจืืื ืืื ืืืืืืช, ืืคืืจืื ISO 14652 ืืกืืคืงืื ืกืขืืคืื ืืืชืืืช ืืฉืงืืื ืฉื ืืืื ืงืืืืช. ืืงืืข ืืชืืื ืืืืืช ืืคืชื ืกืืจ ืืืืฉ-ืืืจื ืืฆืืื ืืืืงืื ืฉืืืืจืื ืืชืืฆืขืช ืืืืืคื. ืืงืืข ืืกืชืืื ืืฉืืจื ืกืืื ืกืืจ ืืืืฉ. ืื ืืฉ ืฆืืจื ืืชืงื ืืกืคืจ ืกืขืืคืื ืืืืื, ื ืืฆืจ ืกืขืืฃ ืขืืืจ ืื ืกืขืืฃ ืืื.
ืืขืชืงืชื ืืจืกืืืช ืืืฉืืช ืฉื ืืงืืฆืื iso14651_t1_common ะธ ru_RU ืืืืืืจ glibc ืืกืคืจืืืช ืืืืช ืฉืื ~/.local/share/i18n/locales/ ืืขืจืืช ืืขื ืืช ืืงืืข LC_COLLATE ะฒ ru_RU. ืืจืกืืืช ืืืฉืืช ืฉื ืงืืฆืื ืชืืืืืช ืืืืืืื ืืืจืกื ืฉืื glibc. ืื ืชืจืฆื ืืืฉืชืืฉ ืืืจืกืืืช ืืฉื ืืช ืืืชืจ ืฉื ืงืืฆืื, ืชืฆืืจืื ืืฉื ืืช ืืช ืืฉืืืช ืืกืืืืื ืืืช ืืืงืื ืื ืืชืืืื ืืืืืคื ืืืืื.
LC_COLLATE
% Copy the template from ISO/IEC 14651
copy "iso14651_t1"
reorder-after <U000D>
<U0020> <S0020>;<BASE>;<MIN>;<U0020> % SPACE
<U0021> <S0021>;<BASE>;<MIN>;<U0021> % EXCLAMATION MARK
<U0022> <S0022>;<BASE>;<MIN>;<U0022> % QUOTATION MARK
...
<U007D> <S007D>;<BASE>;<MIN>;<U007D> % RIGHT CURLY BRACKET
<U007E> <S007E>;<BASE>;<MIN>;<U007E> % TILDE
reorder-end
END LC_COLLATE
ืืืขืฉื, ืืืื ืฆืืจื ืืฉื ืืช ืืช ืืฉืืืช ื LC_IDENTIFICATION ืืื ืฉืืฆืืืขื ืขื ืืืงืื ru_MY, ืืื ืืืืืื ืฉืื ืื ืื ืืื ื ืืจืฉ, ืืืืืื ืฉืื ืืืืืช ืืช ืืืจืืืื ืืืืืคืืฉ ืืืจ ืืงืืืืช locale-archive.
ืื localdef ืขืื ืขื ืงืืฆืื ืืชืืงืืื ืฉืื ืืจื ืืฉืชื ื I18NPATH ืืชื ืืืื ืืืืกืืฃ ืกืคืจืืื ื ืืกืคืช ืืืืคืืฉ ืงืืฆื ืงืื, ืื ืืชื ืืฆืืื ืืช ืืกืคืจืืื ืืฉืืืจืช ืงืืฆืื ืืื ืืจืืื ืื ืชืื ืขื ืงืืืื ืืืืกื ืืื:
$> I18NPATH=~/.local/share/i18n localedef -i ru_RU -f UTF-8 ~/.local/lib/locale/ru_MY.UTF-8
POSIX ืื ืื ืฉื ืฉืคื ืืชื ืืืื ืืืชืื ื ืชืืืื ืืืืืืื ืืกืคืจืืืช ืขื ืงืืฆื ืืงืืืืื, ืืื ืืงื ื ืืื ืงืืืื, ืืื glibc ะฒ ืืื ืืงืก ืื ืื ืชืืืื ื ืกืคืจืื ืืกืคืจืืืช ืืืกืืก, ืืืชื ื ืืชื ืืขืงืืฃ ืืืืฆืขืืช ืืฉืชื ื LOCPATH. ืืืจื ืืืชืงื ื LOCPATH=~/.local/lib/locale/ ืื ืืงืืฆืื ืืงืฉืืจืื ืืืืงืืืืฆืื ืืืคืฉื ืจืง ืืชืืงืืื ืฉืื. ืืจืืืื ืฉื ืืงืืืืช ืขื ืขืจืืช ืืืฉืชื ืื LOCPATH ืืชืขืืื.
ืื ื ืืืืื ืืืืจืืข:
$> LANG=ru_MY.UTF-8 LOCPATH=~/.local/lib/locale/ sort buhg.txt
ะะฑะฐะบะฐะฝะพะฒ ะะธั
ะฐะธะป;ะผะฐะปัั
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบัะฐะฝะพะฒัะธัะฐ
ะะฒะฐะฝะพะฒ ะะฝะดัะตะน;ัะปะตัะฐัั
ะะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะฐะดะฒะพะบะฐั
ืืืื! ืขืฉืื ื ืืืช!
ืขืืืื ืืื
ืืืจ ืขื ืืชื ืขื ืืฉืืืืช ืืืื ืืืื ืืืจืืืืช ืฉืืืฆืื ืืืชืืื, ืืื ืขืืืื ืืฉ ืืื ืฉืืืืช ืืืื ืฉืืืืืช - ืืืืืืช ืืืืชื ื ืจืืืช.
ื ืืืืจ ืืืขืื ืืืงืืจืืช.
ืืื ืืชืืื ืืช sort ืืืชืืื ืืช ืืืฆืืจืฃ ืืฉืชืืฉ ืืืืชื ืคืื ืงืฆืืืช ืืฉืืืืช ืืืจืืืืช ื glibc. ืืื ืื ืงืจื ืืืฆืืจืฃ ื ืชื ืฉืืืืช ืืืื ืืฉืืจืืช ืฉืืืืื ืืช ืืคื ืืคืงืืื sort ืืืงืื en_US.UTF-8? ืืชืฉืืื ืคืฉืืื: sort ืืฉืืื ืืช ืื ืืืืจืืืช, ื ืืืฆืืจืฃ ืืฉืืื ืจืง ืืช ืืืคืชื, ืฉืืื ืืืจืืจืช ืืืื ืืช ืชืืืืช ืืืืจืืืช ืขื ืืชื ืืจืืื ืืจืืฉืื. ืืืืืื ืฉืื, ืื ืืืื ืืืืืขืช ืฉืืืื ืืืืืื ืฉืืืืื ืฉื ืืืืืื ืืจืืฉืื ืืช ืืฉืืจืืช ืื ืชืื ืืช ืืืืื ืฉื ืืฉืืจืืช ืืฉืืืืช.
ืืงืื "ื" ืืืืื ืฉืื ืืืืจืืืืช ืืืืื ืืช ืชืช-ืืืจืืืืช ืืจืืฉืื ืืืช ืขื ืืจืืื ืืจืืฉืื ืืืืื ื, ืืื ืื ืจืง ืืกืืื ืืช ืืฉืืืื. ืืคืฉืจ ืืืืืจ ื ืชืื ืื (ืื ืฉืื ืขื ืืืชื ืฉืืืช ืืฉืคืื, ืืื ืฉืืืช ืคืจืืืื ืฉืื ืื) ืฉืืื ืืืืขืช ืืฉืืืื ืืชื ื ืชืืฆืืช ืืืืื ืงืืฆืื ืฉืืืื. ืื ื ืจืฆื ืืืฆืืจืฃ ืฉืืจืืช ืงืืืฅ ืืืืืืืช ืืคื ืฉื ืืื, ืื ืืืจื ืื ืืื ื ืชืืื ืืฆืืื ืืืคืืจืฉ ืืช ืืคืจืื ืืฉืืืช ืืืืืื ืืคื ืฉืื ืืืคืชื, ืืื ืืคื ืื ืืฉืืจื. ืืืงืจื ืื, ืืืืืื ืืชืงืื ืืืืื ืืื ืืืื ืฉืืืืืช ืืืฃ ืืงืื:
$> sort -t ; -k 1 buhg.txt > buhg.srt
$> sort -t ; -k 1 mail.txt > mail.srt
$> join -t ; buhg.srt mail.srt > result
ืืืืื ืฉืืืฆืขื ืืืฆืืื ืืงืืืื CP1251 ืืืื ืฉืืืื ื ืืกืคืช. ืืขืืืื ืืื ืฉืืื ืืืคืฆืืช ืืืืืจืืช ืื ืืื ืืงืก ืืืืืืช ืืกืจืืช ืืืงืื ืืืืืจ ru_RU.CP1251. ืื ืืืงืื ืืงืืืคืืืฆืื ืื ื ืืฆื, ืื sort ืืฉืชืืฉ ืืฉืงื ืืืฉืืืื ืฉื ืืืื-byte, ืืื ืื ืฉืจืืื ื.
ืืื, ืืฉ ืขืื ืชืงืื ืงืื ื ืฉืงืฉืืจื ืืืืกืจ ื ืืืฉืืช ืฉื ืืงืืืืช ืืงืืืคืืื. ืงึฐืืึผืฆึธื LOCPATH=/tmp locale -a ืืืชื ืจืฉืืื ืฉื ืื ืืืืืจืื ื locale-archive, ืืื ืขื ืขืจืืช ืืืฉืชื ืื LOCPATH ืขืืืจ ืื ืืชืืื ืืืช (ืืืื ืืืจืืืช ืืืืจ) ืืืืจืื ืืื ืื ืืืื ืืืื ืื.
$> LOCPATH=/tmp locale -a | grep en_US
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
$> LC_COLLATE=en_US.UTF-8 sort --debug
sort: using โen_US.UTF-8โ sorting rules
$> LOCPATH=/tmp LC_COLLATE=en_US.UTF-8 sort --debug
sort: using simple byte comparison
ืืกืงื ื
ืื ืืชื ืืชืื ืช ืฉืจืืื ืืืฉืื ืฉืืืจืืืืช ืื ืงืืืฆื ืฉื ืืชืื, ืื ืืืืืจื ืฉืื LC_COLLATE=C.
ืื ืืชื ืืืฉื ืื ืืืืจ ืืืืื ืื, ืขืืืฃ ืฉืชืืืจ ืืืงืื ืฉืื.
ืื ืืชื ืืฉืชืืฉ ืคืฉืื, ืื ืืชื ืจืง ืฆืจืื ืืืชืจืื ืืขืืืื ืฉืืคืงืืื ืื ื-ื ืืคืื ืงืืฆืื ืฉืืชืืืืื ืื ืงืืื ืืขืืจืืช ืืงืืฆืื ืฉืืชืืืืื ืืืืช, ื ืืคืงื ืืฆืืช, ืฉืืฉืชืืฉ ืืคืื ืงืฆืืืช ืืคื ืืืืืช ืฉืื ืืื ืืืืื ืฉืืืช, ืฉื ืงืืฆืื ืฉืืชืืืืื ืื ืงืืื ืืชืืืืช ืืจืฉืืื.
ืชืืืืจ
ืืงืืจ: www.habr.com