* Re: [Comm] Неправильная сортировка в консоли? @ 2006-10-13 13:24 ` Sergey Stepanov 2006-10-13 13:36 ` Alexei V. Mezin 2006-10-13 14:00 ` Denis G. Samsonenko 0 siblings, 2 replies; 13+ messages in thread From: Sergey Stepanov @ 2006-10-13 13:24 UTC (permalink / raw) To: ALT Linux Community > > Если LC_COLLATE не выставлено как C, то алгоритм сортировки > > при обработке строк пропускает небуквенные символы. > > Поэтому сортировка "неправильная". Зато по русскому алфавиту. > > > > Если LC_COLLATE=C то строки сортируются в чистом виде, > > не сбрасывая со счетов небуквенные символы. Сортировка > > в этом случае "правильная". Но зато не по русскому алфавиту. > > > > Вопрос. Как же сделать так, чтобы и сортировка шла по алфавиту, > > и "небуквенные" символы учитывались при сортировке? > > Интересный вопрос. А каков критерий правильности? На сколько я > понимаю, при локали C, сортирующий механизм ничего не знает о буквах, > и сотрирует согласно кодам символов в ASCII. Когда же вы > устанавливаете локаль в отличное от C значение, то сортировка идёт в > том порядке, в котором это указано в данной локали. И тут уже > сортируются с буквы, а не коды символов. Вероятно, как сортировать > небуквенные символы просто не задано. Да и не понятно, как их > сортировать, каков должен быть порядок, должны они идти до букв или > после, а может часть до, а часть после? Каков критерий этой вашей > "правильности"? Критерий правильности простой, я же его написал - "чтобы и сортировка шла по алфавиту, и небуквенные символы учитывались при сортировке". Мы имеем два варианта, и оба они неправильные. 1. LC_COLLATE!=C _ а А аа а_а аб а_б аф а_ф аш а_ш б Б в г д 2. LC_COLLATE=C _ ё ю а а_а а_б а_ф а_ш аа аб аф аш б ц д е ф А нужен третий вариант _ а а_а а_б а_ф а_ш аа аб аф аш А б Б в г д Вот. Как его добиться от программы sort, ls и.т.д.? Вообще никак? PS: По поводу небуквенных символов - при сортировке как минимум должна учитываться эээ... одинаковость небуквенного символа. То есть сивол "_" в одной строке одинаков с символом "_" в другой строке, вне зависимости от того, имеет ли он ASCII код (или внутренний код в языке) или вообще его не имеет. Должен интересовать только факт одинаковости. И согласно этому факту, сортировка в любой локале должна быть bet_eng.png bet_esp.png bet_por.png betperline_eng.png betperline_esp.png betperline_por.png а не bet_eng.png bet_esp.png betperline_eng.png betperline_esp.png betperline_por.png bet_por.png Со всяческими пожеланиями, Сергей. http://xi.net.ru ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 13:24 ` [Comm] Неправильная сортировка в консоли? Sergey Stepanov @ 2006-10-13 13:36 ` Alexei V. Mezin 2006-10-13 14:01 ` Denis G. Samsonenko 2006-10-13 14:00 ` Denis G. Samsonenko 1 sibling, 1 reply; 13+ messages in thread From: Alexei V. Mezin @ 2006-10-13 13:36 UTC (permalink / raw) To: ALT Linux Community Sergey Stepanov пишет: > Критерий правильности простой, я же его написал - "чтобы и > сортировка шла по алфавиту, и небуквенные символы учитывались > при сортировке". > Может сменить локаль с koi8 на cp1251? Есть хоть одна причина в наше время использовать кои8? -- Alexei V. Mezin NT-MDT Co. Phone: 095-913-5736 Fax: 095-913-573 Email: mezin@ntmdt.ru URL: http://www.ntmdt.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 13:36 ` Alexei V. Mezin @ 2006-10-13 14:01 ` Denis G. Samsonenko 2006-10-13 14:05 ` Alexei V. Mezin 0 siblings, 1 reply; 13+ messages in thread From: Denis G. Samsonenko @ 2006-10-13 14:01 UTC (permalink / raw) To: ALT Linux Community Привет! 13.10.06, Alexei V. Mezin написал(а): > > Критерий правильности простой, я же его написал - "чтобы и > > сортировка шла по алфавиту, и небуквенные символы учитывались > > при сортировке". > > > Может сменить локаль с koi8 на cp1251? Есть хоть одна причина в наше > время использовать кои8? А это что-то должно изменить? -- Всего доброго, Денис. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 14:01 ` Denis G. Samsonenko @ 2006-10-13 14:05 ` Alexei V. Mezin 2006-10-13 14:23 ` Denis G. Samsonenko 0 siblings, 1 reply; 13+ messages in thread From: Alexei V. Mezin @ 2006-10-13 14:05 UTC (permalink / raw) To: ALT Linux Community Denis G. Samsonenko пишет: > Привет! > > 13.10.06, Alexei V. Mezin написал(а): >>> Критерий правильности простой, я же его написал - "чтобы и >>> сортировка шла по алфавиту, и небуквенные символы учитывались >>> при сортировке". >>> >> Может сменить локаль с koi8 на cp1251? Есть хоть одна причина в наше >> время использовать кои8? > > А это что-то должно изменить? > А разве не должно? Мне показалось, что сортировка "с учетом спецсимволов" -- это просто сортировка по значению байтов. Именно поэтому русские буквы в приведенном выводе идут как а, б, ц, д и так далее. Это преимущество и недостаток КОИ -- легко получается транслитерация, зато буквы в кодовой таблице не по алфавиту. В ср1251 буквы по алфавиту. -- Alexei V. Mezin NT-MDT Co. Phone: 095-913-5736 Fax: 095-913-573 Email: mezin@ntmdt.ru URL: http://www.ntmdt.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 14:05 ` Alexei V. Mezin @ 2006-10-13 14:23 ` Denis G. Samsonenko 2006-10-13 14:27 ` Alexei V. Mezin 0 siblings, 1 reply; 13+ messages in thread From: Denis G. Samsonenko @ 2006-10-13 14:23 UTC (permalink / raw) To: ALT Linux Community Привет! 13.10.06, Alexei V. Mezin написал: > >> Может сменить локаль с koi8 на cp1251? Есть хоть одна причина в наше > >> время использовать кои8? > > > > А это что-то должно изменить? > > > А разве не должно? Мне показалось, что сортировка "с учетом > спецсимволов" -- это просто сортировка по значению байтов. Именно > поэтому русские буквы в приведенном выводе идут как а, б, ц, д и так > далее. Это преимущество и недостаток КОИ -- легко получается > транслитерация, зато буквы в кодовой таблице не по алфавиту. В ср1251 > буквы по алфавиту. Сортировка не зависит от того, как буквы расположены в кодовой таблице. В любой русской локали сортировка русских букв будет производиться согласно алфавита, а не положения в кодовой таблице. Для того локаль и ввели (в том числе), чтобы не зависеть от внетреннего представления символа. -- Всего доброго, Денис. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 14:23 ` Denis G. Samsonenko @ 2006-10-13 14:27 ` Alexei V. Mezin 2006-10-13 14:31 ` Denis G. Samsonenko 0 siblings, 1 reply; 13+ messages in thread From: Alexei V. Mezin @ 2006-10-13 14:27 UTC (permalink / raw) To: ALT Linux Community Denis G. Samsonenko пишет: Сортировка не зависит от того, как буквы расположены в кодовой > таблице. В любой русской локали сортировка русских букв будет > производиться согласно алфавита, а не положения в кодовой таблице. Для > того локаль и ввели (в том числе), чтобы не зависеть от внетреннего > представления символа. > А как тогда объяснить это? > 2. LC_COLLATE=C > _ > ё > ю > а > а_а > а_б > а_ф > а_ш > аа > аб > аф > аш > б > ц > д > е > ф Тут спецсимволы учтены правильно, а вот буквы идут в порядке расположения в таблице КОИ8. Если бы локаль в системе была бы ср1251, то при такой сортировке порядок был бы правильным. Разве не так? -- Alexei V. Mezin NT-MDT Co. Phone: 095-913-5736 Fax: 095-913-573 Email: mezin@ntmdt.ru URL: http://www.ntmdt.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 14:27 ` Alexei V. Mezin @ 2006-10-13 14:31 ` Denis G. Samsonenko 2006-10-13 14:34 ` Alexei V. Mezin 0 siblings, 1 reply; 13+ messages in thread From: Denis G. Samsonenko @ 2006-10-13 14:31 UTC (permalink / raw) To: mezin, ALT Linux Community Привет! 13.10.06, Alexei V. Mezin<mezin@ntmdt.ru> написал: > Сортировка не зависит от того, как буквы расположены в кодовой > > таблице. В любой русской локали сортировка русских букв будет > > производиться согласно алфавита, а не положения в кодовой таблице. Для > > того локаль и ввели (в том числе), чтобы не зависеть от внетреннего > > представления символа. > > > > А как тогда объяснить это? > > > 2. LC_COLLATE=C ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > ё > > ю > > а > > а_а > > а_б > > а_ф > > а_ш > > аа > > аб > > аф > > аш > > б > > ц > > д > > е > > ф > > Тут спецсимволы учтены правильно, а вот буквы идут в порядке > расположения в таблице КОИ8. Если бы локаль в системе была бы ср1251, то > при такой сортировке порядок был бы правильным. Разве не так? А тут локаль для сортировки не установлена (точнее установлена в C), а потому сортируется согласно кодам символов. Выставьте LC_COLLATE в ru.RU_KOI8-R, и будет сортировать по алфавиту. -- Всего доброго, Денис. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 14:31 ` Denis G. Samsonenko @ 2006-10-13 14:34 ` Alexei V. Mezin 2006-10-13 14:40 ` Denis G. Samsonenko 0 siblings, 1 reply; 13+ messages in thread From: Alexei V. Mezin @ 2006-10-13 14:34 UTC (permalink / raw) To: community Denis G. Samsonenko пишет: > А тут локаль для сортировки не установлена (точнее установлена в C), а > потому сортируется согласно кодам символов. Выставьте LC_COLLATE в > ru.RU_KOI8-R, и будет сортировать по алфавиту. > Да. Но в исходном посте поставлена проблема. Переход на другую локаль -- решение. -- Alexei V. Mezin NT-MDT Co. Phone: 095-913-5736 Fax: 095-913-573 Email: mezin@ntmdt.ru URL: http://www.ntmdt.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 14:34 ` Alexei V. Mezin @ 2006-10-13 14:40 ` Denis G. Samsonenko 2006-10-13 15:10 ` Andriy Dobrovolkii 0 siblings, 1 reply; 13+ messages in thread From: Denis G. Samsonenko @ 2006-10-13 14:40 UTC (permalink / raw) To: ALT Linux Community Привет! 13.10.06, Alexei V. Mezin написал: > > А тут локаль для сортировки не установлена (точнее установлена в C), а > > потому сортируется согласно кодам символов. Выставьте LC_COLLATE в > > ru.RU_KOI8-R, и будет сортировать по алфавиту. > > > Да. Но в исходном посте поставлена проблема. Переход на другую локаль -- > решение. Т.е. вы предлагаете перейти в локаль ru.RU_CP1251 и установить LC_COLLATE=C? Не поможет, т.к. буква "ё" и в кодировке cp1251 находится не на положенном согласно алфавиту месте. Т.е. решения нет. -- Всего доброго, Денис. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 14:40 ` Denis G. Samsonenko @ 2006-10-13 15:10 ` Andriy Dobrovolkii 0 siblings, 0 replies; 13+ messages in thread From: Andriy Dobrovolkii @ 2006-10-13 15:10 UTC (permalink / raw) To: ALT Linux Community Denis G. Samsonenko пишет: > Привет! > > 13.10.06, Alexei V. Mezin написал: > >>> А тут локаль для сортировки не установлена (точнее установлена в C), а >>> потому сортируется согласно кодам символов. Выставьте LC_COLLATE в >>> ru.RU_KOI8-R, и будет сортировать по алфавиту. >>> >>> >> Да. Но в исходном посте поставлена проблема. Переход на другую локаль -- >> решение. >> > > Т.е. вы предлагаете перейти в локаль ru.RU_CP1251 и установить > LC_COLLATE=C? Не поможет, т.к. буква "ё" и в кодировке cp1251 > находится не на положенном согласно алфавиту месте. > > Т.е. решения нет. > > Мне кажется, что игнорирование знака подчеркивания вполне правильное поведение. -- Андрей ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 13:24 ` [Comm] Неправильная сортировка в консоли? Sergey Stepanov 2006-10-13 13:36 ` Alexei V. Mezin @ 2006-10-13 14:00 ` Denis G. Samsonenko 2006-10-13 19:00 ` Yura Kalinichenko 1 sibling, 1 reply; 13+ messages in thread From: Denis G. Samsonenko @ 2006-10-13 14:00 UTC (permalink / raw) To: ALT Linux Community Вечер добрый! 13.10.06, Sergey Stepanov<dlagovna@mail.ru> написал(а): > Критерий правильности простой, я же его написал - "чтобы и > сортировка шла по алфавиту, и небуквенные символы учитывались > при сортировке". Как учитывались, в каком порядке? > Вот. Как его добиться от программы sort, ls и.т.д.? > Вообще никак? Вероятно никак, иначе бы сортировало. Можете пропатчить соответствующие алгоритмы в glibc (вроде там), или внести рацпредложение в маинстрим, может поправят. А как уважаемые гуру прокоментируют ситуацию с сортировкой? -- Всего доброго, Денис. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 14:00 ` Denis G. Samsonenko @ 2006-10-13 19:00 ` Yura Kalinichenko 2006-10-14 4:17 ` Denis G. Samsonenko 0 siblings, 1 reply; 13+ messages in thread From: Yura Kalinichenko @ 2006-10-13 19:00 UTC (permalink / raw) To: ALT Linux Community В Птн, 13/10/2006 в 23:00 +0900, Denis G. Samsonenko пишет: > Вечер добрый! > > 13.10.06, Sergey Stepanov<dlagovna@mail.ru> написал(а): > > Критерий правильности простой, я же его написал - "чтобы и > > сортировка шла по алфавиту, и небуквенные символы учитывались > > при сортировке". > > Как учитывались, в каком порядке? > > > Вот. Как его добиться от программы sort, ls и.т.д.? > > Вообще никак? > > Вероятно никак, иначе бы сортировало. Можете пропатчить > соответствующие алгоритмы в glibc (вроде там) C тех времен, когда мужчины были мужчинами, и сами писали себе таблицы локалей (man 5 locale) и компилировали их (man localedef) навряд ли что- то настолько изменилось в Linux, что теперь для этой операции надо чего- то там патчить в glibc... -- Yura Kalinichenko ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Comm] Неправильная сортировка в консоли? 2006-10-13 19:00 ` Yura Kalinichenko @ 2006-10-14 4:17 ` Denis G. Samsonenko 0 siblings, 0 replies; 13+ messages in thread From: Denis G. Samsonenko @ 2006-10-14 4:17 UTC (permalink / raw) To: ALT Linux Community День добрый! 14.10.06, Yura Kalinichenko написал: > C тех времен, когда мужчины были мужчинами, и сами писали себе таблицы > локалей (man 5 locale) и компилировали их (man localedef) навряд ли что- > то настолько изменилось в Linux, что теперь для этой операции надо чего- > то там патчить в glibc... Ну значит поправить эту самую таблицу. Я не специалист, и не утверждал, что именно в glibc править надо. -- Всего доброго, Денис. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2006-10-14 4:17 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2006-10-13 13:24 ` [Comm] Неправильная сортировка в консоли? Sergey Stepanov 2006-10-13 13:36 ` Alexei V. Mezin 2006-10-13 14:01 ` Denis G. Samsonenko 2006-10-13 14:05 ` Alexei V. Mezin 2006-10-13 14:23 ` Denis G. Samsonenko 2006-10-13 14:27 ` Alexei V. Mezin 2006-10-13 14:31 ` Denis G. Samsonenko 2006-10-13 14:34 ` Alexei V. Mezin 2006-10-13 14:40 ` Denis G. Samsonenko 2006-10-13 15:10 ` Andriy Dobrovolkii 2006-10-13 14:00 ` Denis G. Samsonenko 2006-10-13 19:00 ` Yura Kalinichenko 2006-10-14 4:17 ` Denis G. Samsonenko
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git