* 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: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 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 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