Portál AbcLinuxu, 6. května 2025 09:18

Dotaz: Jak řeší GNU sed znak 0xff ?

15.11.2022 17:51 dav12
Jak řeší GNU sed znak 0xff ?
Přečteno: 361×
Odpovědět | Admin
Přesto že, podle info stránky pro sed, byte 0xff nespadá do žádné třídy znaků.

Regexp [^/] by měl vybrat vše co není znak /

Příklad:

echo -e "/test/aaa\xffbbb" | sed -z 's|aaa[^/]bbb|eee|'

nevypíše mnou očekávané: /test/eee

Je to chyba příkazu sed?


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (čavo)
15.11.2022 19:41 X
Rozbalit Rozbalit vše Re: Jak řeší GNU sed znak 0xff ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napoveda:
echo -e "/test/aaa\xffbbb" | LANG=C sed -z 's|aaa[^/]bbb|eee|'
16.11.2022 15:27 dav12
Rozbalit Rozbalit vše Re: Jak řeší GNU sed znak 0xff ?
Jen přidám seznam bajtů, které jsou mimo utf8 (pro které to taky "nefunguje"):

0xc0, 0xc1, 0xe0, 0xf0, 0xf5 až 0xff

Podle mne by "sed" mohl namapovat těch 15 bajtu jako přílepek k unicode rozsahu U+10FFFF = (nebo kolik je jich zrovna v mode).

Takhle asi pokud budu chtít obecný utf8 regexp na výběr "fajlů", si budu muset pomoct namapováním na aktuálně nepoužité unicode znaky a) v textu cestě k fajlu, b) v textu regexpu (což asi není snadno realizovatelné).

Jinak děkuji za nápovědu - původně sem chtěl rozebrat cestu k fajlu, David.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.