Re: glibc Seltsamkeiten

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: glibc Seltsamkeiten

Dirk Heinrichs
Am Donnerstag, 3. November 2005 21:38 schrieb ext Markus Rennings:

> % locale
> LANG=de_DE@euro
> LC_CTYPE="de_DE@euro"
> LC_NUMERIC="de_DE@euro"
> LC_TIME="de_DE@euro"
> LC_COLLATE="de_DE@euro"
> LC_MONETARY="de_DE@euro"
> LC_MESSAGES="de_DE@euro"
> LC_PAPER="de_DE@euro"
> LC_NAME="de_DE@euro"
> LC_ADDRESS="de_DE@euro"
> LC_TELEPHONE="de_DE@euro"
> LC_MEASUREMENT="de_DE@euro"
> LC_IDENTIFICATION="de_DE@euro"
> LC_ALL=de_DE@euro
Wenn LC_ALL gesetzt ist, werden alle anderen LC_* Variablen ignoriert.

Bye...

        Dirk
--
Dirk Heinrichs          | Tel:  +49 (0)162 234 3408
Configuration Manager   | Fax:  +49 (0)211 47068 111
Capgemini Deutschland   | Mail: [hidden email]
Hambornerstraße 55      | Web:  http://www.capgemini.com
D-40472 Düsseldorf      | ICQ#: 110037733
GPG Public Key C2E467BB | Keyserver: www.keyserver.net

attachment0 (197 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: glibc Seltsamkeiten

Markus Rennings
Am Freitag, 4. November 2005 07:52 schrieb Dirk Heinrichs:
> Am Donnerstag, 3. November 2005 21:38 schrieb ext Markus Rennings:
> > LC_ALL=de_DE@euro
>
> Wenn LC_ALL gesetzt ist, werden alle anderen LC_* Variablen ignoriert.

Ich habe das gleiche Verhalten, wenn ich LC_ALL nicht setzte:

#v+
% unset LC_ALL

% locale
LANG=de_DE@euro
LC_CTYPE="de_DE@euro"
LC_NUMERIC="de_DE@euro"
LC_TIME="de_DE@euro"
LC_COLLATE=de_DE@euro
LC_MONETARY="de_DE@euro"
LC_MESSAGES="de_DE@euro"
LC_PAPER="de_DE@euro"
LC_NAME="de_DE@euro"
LC_ADDRESS="de_DE@euro"
LC_TELEPHONE="de_DE@euro"
LC_MEASUREMENT="de_DE@euro"
LC_IDENTIFICATION="de_DE@euro"
LC_ALL=

% echo -e 'bla\nAnton\nanTon\nANTON' | egrep '^[A-Z]+$' | sed 's/$/|/'
ANTON|
#v-

Ach ja, beim letzten Mal vergessen:
#v+
% ldd =egrep
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/tls/libc.so.6 (0xb7dce000)
        /lib/ld-linux.so.2 (0xb7f07000)
#v-

Davon abgesehen, erhalte ich obiges Verhalten von grep auch mit
"LC_COLLATE=de.DE.utf8".

Ciao,
Markus
--
A: Weil es die Lesbarkeit des Textes verschlechtert.
Q: Warum ist TOFU so schlimm?
A: TOFU
F: Was ist das groesste Aergerniss im Usenet?

attachment0 (205 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: glibc Seltsamkeiten

Bugzilla from michael.mauch@gmx.de
Markus Rennings wrote:

> % echo -e 'bla\nAnton\nanTon\nANTON' | egrep '^[A-Z]+$' | sed 's/$/|/'
> ANTON|
> #v-

Das kleine "a" liegt vor dem grossen "A", ist also in [A-Z] nicht
enthalten:

% echo -e "b\nB\nA\na" | sort
a
A
b
B

Deswegen werden die Wörter mit kleinem "a" nicht ausgegeben.

> Davon abgesehen, erhalte ich obiges Verhalten von grep auch mit
> "LC_COLLATE=de.DE.utf8".

Auch da ist die Reihenfolge dieselbe.

Statt [A-Z] empfiehlt sich übrigens [[:upper:]] (was dann allerdings
auch die grossen Umlaute trifft).

  Michael

attachment0 (196 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Re: glibc Seltsamkeiten

Markus Rennings
Hallo,

Am Freitag, 4. November 2005 20:47 schrieb Michael Mauch:

> > % echo -e 'bla\nAnton\nanTon\nANTON' | egrep '^[A-Z]+$' | sed 's/$/|/'
> > ANTON|
> > #v-
>
> Das kleine "a" liegt vor dem grossen "A", ist also in [A-Z] nicht
> enthalten:
>
> % echo -e "b\nB\nA\na" | sort
> a
> A
> b
> B
>
> Deswegen werden die Wörter mit kleinem "a" nicht ausgegeben.
Ok, aber das "Problem" beim OP war ja, das eben nicht nur "ANTON" sondern auch
"Anton" durch das grep-Kommando mit ausgibt:

| $ echo -e 'bla\nAnton\nanTon\nANTON' | egrep '^[A-Z]+$' | sed 's/$/|/'
| Anton|
| ANTON|

Ciao,
Markus
--
42

attachment0 (205 bytes) Download Attachment