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
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.
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
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
> 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.
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.
> 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
---------------------------------------------------------
> 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
---------------------------------------------------------
Azért a sed adhatott volna valami warningot az stderr-re, hogy nem
tetszik neki az input...
> 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
---------------------------------------------------------
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.
Na de regexp-ben nem volt UTF-8-as karakter, épp az volt a bajom, hogy
a '.' sem illeszkedett...
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
> 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
---------------------------------------------------------