Regulární výraz v sed nefunguje

Re:Regulární výraz v sed nefunguje
« Odpověď #15 kdy: 15. 01. 2013, 13:17:05 »
Takze blbne jenom tohle?

Kód: [Vybrat]
# echo 'A' | sed -n '/[a-z]/p'

jo. Skupiny nefungují správně, třeba:
Kód: [Vybrat]
echo 'a' | sed -n '/[:lower:]/p'nevypíše nic a přitom ta skupina je v BRE definovaná


Re:Regulární výraz v sed nefunguje
« Odpověď #16 kdy: 15. 01. 2013, 13:21:27 »
Dobrej ulet.

Nemuze byt problem tady?
Citace
Ranges  are  very collating-sequence-dependent[...]Try the same test with export LC_ALL=C
http://www.mail-archive.com/gentoo-user@lists.gentoo.org/msg02154.html

Re:Regulární výraz v sed nefunguje
« Odpověď #17 kdy: 15. 01. 2013, 13:23:00 »
Btw, vysvetleni v nasledujicim mailu:

Citace
For example,  in  the  default  C  locale,
>        [a-d] is equivalent to [abcd].  Many locales sort characters in dictio-
>        nary order, and in these locales [a-d] is typically not       
> equivalent  to
>        [abcd];        it  might  be equivalent to [aBbCcDd], for example.  To
> obtain
>        the traditional interpretation of bracket expressions, you can use  the
>        C locale by setting the LC_ALL environment variable to the value C.
http://www.mail-archive.com/gentoo-user@lists.gentoo.org/msg02155.html

Re:Regulární výraz v sed nefunguje
« Odpověď #18 kdy: 15. 01. 2013, 13:27:05 »
Dobrej ulet.

Nemuze byt problem tady?
Citace
Ranges  are  very collating-sequence-dependent[...]Try the same test with export LC_ALL=C
http://www.mail-archive.com/gentoo-user@lists.gentoo.org/msg02154.html

No je to tak! Ty příklady s áčkama najenou fungují.. tedy až na tu [:lower:] skupinu, ale to vem čert. Zvláštní ale je, že se to chová jinak na 64b systému než na 32b. Mám tu ještě jedno 32b zařízení s Gentoo a stejným locale: en_US.UTF-8 a tam to funguje :/

Re:Regulární výraz v sed nefunguje
« Odpověď #19 kdy: 15. 01. 2013, 13:45:29 »
Zvláštní ale je, že se to chová jinak na 64b systému než na 32b.
To se stava...


rubicon

Re:Regulární výraz v sed nefunguje
« Odpověď #20 kdy: 16. 01. 2013, 00:25:28 »
jo. Skupiny nefungují správně, třeba:
Kód: [Vybrat]
echo 'a' | sed -n '/[:lower:]/p'nevypíše nic a přitom ta skupina je v BRE definovaná

Mno, to bude nejspíš tím, že jsi dal sedu za úkol najít znaky ":", "l", "o"..., které on na vstupu nenašel. Posixové třídy znaků se pokud vím musí zadávat následovně:
Kód: [Vybrat]
echo 'a' | sed -n '/[[:lower:]]/p'Navíc, snad v každém dokumentu o RE, který se mi dostal do rukou, je zmiňován tebou finálně odhalený problém s locales.

Re:Regulární výraz v sed nefunguje
« Odpověď #21 kdy: 16. 01. 2013, 07:58:55 »
Navíc, snad v každém dokumentu o RE, který se mi dostal do rukou, je zmiňován tebou finálně odhalený problém s locales.
A není to jenom problém GNU sedu nebo GNU libc? Na MacOS i FreeBSD mi to funguje správně.

Re:Regulární výraz v sed nefunguje
« Odpověď #22 kdy: 16. 01. 2013, 08:48:36 »
jo. Skupiny nefungují správně, třeba:
Kód: [Vybrat]
echo 'a' | sed -n '/[:lower:]/p'nevypíše nic a přitom ta skupina je v BRE definovaná

Mno, to bude nejspíš tím, že jsi dal sedu za úkol najít znaky ":", "l", "o"..., které on na vstupu nenašel. Posixové třídy znaků se pokud vím musí zadávat následovně:
Kód: [Vybrat]
echo 'a' | sed -n '/[[:lower:]]/p'Navíc, snad v každém dokumentu o RE, který se mi dostal do rukou, je zmiňován tebou finálně odhalený problém s locales.

Ok, žádný učený z nebe nespadl. Mohl si přispět jako první a zamezit tomuto plýtvání slovy :) Teť už si to taky budu pamatovat. Ale nechápu, proč by to mělo na 64b systému a 32b systému funguvat jinak :/ Můžeš mě odkázat na nějaký článek o kterém píšeš?