ALT Linux Community general discussions
 help / color / mirror / Atom feed
* 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