Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

sed nem működik furcsa karakterekkel

0 views
Skip to first unread message

Attila Rajmund Nohl <attila.r.nohl@gmail.com>

unread,
Nov 2, 2009, 7:37:57 AM11/2/09
to

Hello!

Van egy file-om egy ilyen tartalmú sorral:

telnet:host=££SERVER1,...

A less így mutatja a file-ban ezt a sort (a 243 invertálva van):
telnet:host=243243SERVER1,...

Ezt akarom lecserélni sed-del, de nem megy:
sed 's/telnet:host=.*$/ssh:host="££SERVER1",.../'

Ha az = jel után bármilyen karaktert teszek a mintába, nem
illeszkedik. Van valakinek ötlete, hogy miért és hogy lehetne
rábeszélni a sed-et arra, hogy mégis illeszkedjen mindenre a '.'? A
locale-em: hu_HU.UTF-8
_________________________________________________
linux lista - li...@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux

Attila Rajmund Nohl <attila.r.nohl@gmail.com>

unread,
Nov 2, 2009, 8:07:14 AM11/2/09
to
Kiss Gabor <ki...@ssg.ki.iif.hu> írta, 2009.11.02.:
[...]

>> Ezt akarom lecserélni sed-del, de nem megy:
>> sed 's/telnet:host=.*$/ssh:host="££SERVER1",.../'
>
> Valamit nem értek. A fenti parancsal épp hogy beszúrsz \243-akat
> a sorba, nem törlöd õket.

Félreértelmezhetően írtam, a lecserélt sttringben is kellene lennie.

>> Ha az = jel után bármilyen karaktert teszek a mintába, nem
>

> A jobb vagy a bal oldalon?

A mintában, a jobb oldalán.

> Nem elég csak a s/telnet:/ssh:/ csere?
> További ötletek:
> s/telnet:host=(..).*/ssh:host="\1SERVER1"/ (ha meg akarod tartani)
> s/telnet:host=...*/ssh:host="SERVER1"/ (ha nem)

Nem elég, mert az utána következő dolgokat is cserélni akarom. Ez a
két parancs meg egyszerűen nem cserél le semmit.

[...]
>> locale-em: hu_HU.UTF-8
>
> A biztonság kedvéért legyen C!

Ezzel van baj, a magyar locale-vel nem illeszkedik, a C-vel igen.

Kiss Gabor

unread,
Nov 2, 2009, 7:59:30 AM11/2/09
to

In article <401d3ba30911020437i615...@mail.gmail.com>,


Attila Rajmund Nohl <attila...@gmail.com> <li...@mlf.linux.rulez.org> writes:
> Van egy file-om egy ilyen tartalmú sorral:
> telnet:host=££SERVER1,...
> A less így mutatja a file-ban ezt a sort (a 243 invertálva van):
> telnet:host=243243SERVER1,...

(Megj.: oktális 243, hexa A3 karakterrõl van szó.)

> Ezt akarom lecserélni sed-del, de nem megy:
> sed 's/telnet:host=.*$/ssh:host="££SERVER1",.../'

Valamit nem értek. A fenti parancsal épp hogy beszúrsz \243-akat


a sorba, nem törlöd õket.

> Ha az = jel után bármilyen karaktert teszek a mintába, nem

A jobb vagy a bal oldalon?

Nem elég csak a s/telnet:/ssh:/ csere?


További ötletek:
s/telnet:host=(..).*/ssh:host="\1SERVER1"/ (ha meg akarod tartani)
s/telnet:host=...*/ssh:host="SERVER1"/ (ha nem)

> illeszkedik. Van valakinek ötlete, hogy miért és hogy lehetne


> rábeszélni a sed-et arra, hogy mégis illeszkedjen mindenre a '.'? A

Pedig illeszkedik az!

$ echo -e 'telnet:host=\0243\0243SERVER1'
telnet:host=££SERVER1
$ echo -e 'telnet:host=\0243\0243SERVER1' | sed 's/.*$/ssh:host="££SERVER1"/'
ssh:host="££SERVER1"
$ echo $LANG
en_US
$

De elõbb pontosítsd, hogy mit is akarsz.

> locale-em: hu_HU.UTF-8

A biztonság kedvéért legyen C!

g

Kiss Gabor

unread,
Nov 2, 2009, 8:25:02 AM11/2/09
to

In article <401d3ba30911020507u4b...@mail.gmail.com>,


Attila Rajmund Nohl <attila...@gmail.com> <li...@mlf.linux.rulez.org> writes:

Ez a két parancs meg egyszerűen nem cserél le semmit.

Úgy érted szabad szemmel nem látod a különbséget, vagy
érted mit kellene csinálnia, de NÁLAD nem az történik?

Ami parancsot lefuttattam és betettem az elõzõ levélbe,
az nálad milyen outputot produkál?

g

Hegedüs Ervin

unread,
Nov 2, 2009, 8:52:53 AM11/2/09
to

hello,

> Van egy file-om egy ilyen tartalmú sorral:
>

> telnet:host=??SERVER1,...


>
> A less így mutatja a file-ban ezt a sort (a 243 invertálva van):
> telnet:host=243243SERVER1,...
>
> Ezt akarom lecserélni sed-del, de nem megy:

> sed 's/telnet:host=.*$/ssh:host="??SERVER1",.../'


>
> Ha az = jel után bármilyen karaktert teszek a mintába, nem
> illeszkedik. Van valakinek ötlete, hogy miért és hogy lehetne
> rábeszélni a sed-et arra, hogy mégis illeszkedjen mindenre a '.'? A
> locale-em: hu_HU.UTF-8

$ LANG=hu_HU sed -e 's/telnet:host=.*$/ssh:host="??SERVER1",.../' file.txt ?

vagy pont az utf8 a lenyeg?

a.

Attila Rajmund Nohl <attila.r.nohl@gmail.com>

unread,
Nov 2, 2009, 1:09:51 PM11/2/09
to
Kiss Gabor <ki...@ssg.ki.iif.hu> írta, 2009.11.02.:
>
> In article <401d3ba30911020507u4b...@mail.gmail.com>,
> Attila Rajmund Nohl <attila...@gmail.com> <li...@mlf.linux.rulez.org>
> writes:
>
> Ez a két parancs meg egyszerűen nem cserél le semmit.
>
> Úgy érted szabad szemmel nem látod a különbséget, vagy
> érted mit kellene csinálnia, de NÁLAD nem az történik?
>
> Ami parancsot lefuttattam és betettem az elõzõ levélbe,
> az nálad milyen outputot produkál?

Ugyanaz volt az output, mint az input, semmi hibaüzenet vagy ilyesmi.
Mindegy, visszaállítottam a locale-t C-re, úgy működött a sed.

Gabor Gombas

unread,
Nov 2, 2009, 2:41:10 PM11/2/09
to

On Mon, Nov 02, 2009 at 01:37:57PM +0100, Attila Rajmund Nohl wrote:

> telnet:host=ŁŁSERVER1,...
[...]


> Ha az = jel után bármilyen karaktert teszek a mintába, nem
> illeszkedik. Van valakinek ötlete, hogy miért és hogy lehetne
> rábeszélni a sed-et arra, hogy mégis illeszkedjen mindenre a '.'? A
> locale-em: hu_HU.UTF-8

Az input nem ervenyes UTF-8, igy UTF-8 locale alatt nem igen tudsz vele
mit kezdeni. Szoval vagy az inputot konvertald ervenyes UTF-8-ra, vagy a
sed-et futtasd olyan locale alatt, amiben az input ertelmes.

Gabor

--
---------------------------------------------------------
MTA SZTAKI Computer and Automation Research Institute
Hungarian Academy of Sciences
---------------------------------------------------------

Gabor Gombas

unread,
Nov 2, 2009, 2:42:11 PM11/2/09
to

On Mon, Nov 02, 2009 at 12:59:30PM +0000, Kiss Gabor wrote:

> Pedig illeszkedik az!
>
> $ echo -e 'telnet:host=\0243\0243SERVER1'

> telnet:host=ŁŁSERVER1
> $ echo -e 'telnet:host=\0243\0243SERVER1' | sed 's/.*$/ssh:host="ŁŁSERVER1"/'
> ssh:host="ŁŁSERVER1"
> $ echo $LANG
> en_US

Na ez az. Az en_US nem UTF-8. Probald meg en_US.UTF-8 alatt.

Gabor

--
---------------------------------------------------------
MTA SZTAKI Computer and Automation Research Institute
Hungarian Academy of Sciences
---------------------------------------------------------

Attila Rajmund Nohl <attila.r.nohl@gmail.com>

unread,
Nov 2, 2009, 3:55:13 PM11/2/09
to

Gabor Gombas <gom...@sztaki.hu> írta, 2009.11.02.:
> On Mon, Nov 02, 2009 at 01:37:57PM +0100, Attila Rajmund Nohl wrote:
>
>> telnet:host=ŁŁSERVER1,...
> [...]
>> Ha az = jel után bármilyen karaktert teszek a mintába, nem
>> illeszkedik. Van valakinek ötlete, hogy miért és hogy lehetne
>> rábeszélni a sed-et arra, hogy mégis illeszkedjen mindenre a '.'? A
>> locale-em: hu_HU.UTF-8
>
> Az input nem ervenyes UTF-8, igy UTF-8 locale alatt nem igen tudsz vele
> mit kezdeni. Szoval vagy az inputot konvertald ervenyes UTF-8-ra, vagy a
> sed-et futtasd olyan locale alatt, amiben az input ertelmes.

Azért a sed adhatott volna valami warningot az stderr-re, hogy nem
tetszik neki az input...

Gabor Gombas

unread,
Nov 2, 2009, 4:23:33 PM11/2/09
to

On Mon, Nov 02, 2009 at 09:55:13PM +0100, Attila Rajmund Nohl wrote:

> Azért a sed adhatott volna valami warningot az stderr-re, hogy nem
> tetszik neki az input...

A sed-nek semmi baja az inputtal. Csak eppen egy UTF-8 regexp nem
illeszkedik egy olyan inputra, ami UTF-8 szerint ervenytelen. Ugyan
santit a hasonlat, de kicsit olyan, mint ahogy az SQL-ben a "foo = NULL"
es a "foo != NULL" egyarant ertelmetlen.

Gabor

--
---------------------------------------------------------
MTA SZTAKI Computer and Automation Research Institute
Hungarian Academy of Sciences
---------------------------------------------------------

Hegedüs Ervin

unread,
Nov 2, 2009, 4:34:33 PM11/2/09
to

hello,


> > Azért a sed adhatott volna valami warningot az stderr-re, hogy nem
> > tetszik neki az input...
>
> A sed-nek semmi baja az inputtal. Csak eppen egy UTF-8 regexp nem
> illeszkedik egy olyan inputra, ami UTF-8 szerint ervenytelen. Ugyan
> santit a hasonlat, de kicsit olyan, mint ahogy az SQL-ben a "foo = NULL"
> es a "foo != NULL" egyarant ertelmetlen.

szerintem nem, azert egy karakter "folyamrol" illik tudni
eldonteni egy programnak, hogy milyen a kodolasa, legalabb annyit
hogy valid vagy nem. Főleg h a lokálisok be vannak állítva, akkor
meg vegye mán' a fáradtságot a regexp compiler, és értékelje ki
aszerint... Ha meg nem tudja, imho jogos igény a warning.


a.

Attila Rajmund Nohl <attila.r.nohl@gmail.com>

unread,
Nov 2, 2009, 5:17:18 PM11/2/09
to

Gabor Gombas <gom...@sztaki.hu> írta, 2009.11.02.:
> On Mon, Nov 02, 2009 at 09:55:13PM +0100, Attila Rajmund Nohl wrote:
>
>> Azért a sed adhatott volna valami warningot az stderr-re, hogy nem
>> tetszik neki az input...
>
> A sed-nek semmi baja az inputtal. Csak eppen egy UTF-8 regexp nem
> illeszkedik egy olyan inputra, ami UTF-8 szerint ervenytelen. Ugyan
> santit a hasonlat, de kicsit olyan, mint ahogy az SQL-ben a "foo = NULL"
> es a "foo != NULL" egyarant ertelmetlen.

Na de regexp-ben nem volt UTF-8-as karakter, épp az volt a bajom, hogy
a '.' sem illeszkedett...

Kiss Gabor

unread,
Nov 3, 2009, 2:50:08 AM11/3/09
to

In article <20091102213...@arxnet.hu>,


=?iso-8859-2?Q?Heged=FCs?= Ervin <air...@freemail.hu> writes:
> szerintem nem, azert egy karakter "folyamrol" illik tudni
> eldonteni egy programnak, hogy milyen a kodolasa, legalabb annyit

> hogy valid vagy nem. F=F5leg h a lok=E1lisok be vannak =E1ll=EDtva, akkor
> meg vegye m=E1n' a f=E1radts=E1got a regexp compiler, =E9s =E9rt=E9kelje ki
> aszerint... Ha meg nem tudja, imho jogos ig=E9ny a warning.

Ezt a programot _bárki_ továbbfejlesztheti. Tessék, szabad a pálya...

g

Gabor Gombas

unread,
Nov 3, 2009, 4:36:59 AM11/3/09
to

On Mon, Nov 02, 2009 at 11:17:18PM +0100, Attila Rajmund Nohl wrote:

> Na de regexp-ben nem volt UTF-8-as karakter, épp az volt a bajom, hogy
> a '.' sem illeszkedett...

Dehogynem. A '.' a regexp-ben egy teljesen legalis UTF-8 karakter. Az
UTF-8 szerint ervenytelen byte szekvencia viszont _nem karakter_, tehat
a '.' sem illeszkedik ra.

Gabor

--
---------------------------------------------------------
MTA SZTAKI Computer and Automation Research Institute
Hungarian Academy of Sciences
---------------------------------------------------------

0 new messages