ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Sergey Stepanov <dlagovna@mail.ru>
To: ALT Linux Community <community@lists.altlinux.org>
Subject: Re: [Comm] Неправильная сортировка в консоли?
Date: Fri, 13 Oct 2006 17:24:41 +0400
Message-ID: <E1GYN1l-0007Hw-00.dlagovna-mail-ru@f79.mail.ru> (raw)
In-Reply-To: =?koi8-r?Q?<957265820610130536x33cf2a76k8be3307a922eff7b=40mail.gmail.com>?=


> > Если 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



       reply	other threads:[~2006-10-13 13:24 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-13 13:24 ` Sergey Stepanov [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1GYN1l-0007Hw-00.dlagovna-mail-ru@f79.mail.ru \
    --to=dlagovna@mail.ru \
    --cc=community@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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