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
next parent 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