Regularni vyraz - binarni kod

Alexandr Malusek malusek na hroch.ujf.cas.cz
Pátek Září 8 11:35:20 CEST 2000


hilovsky na unipo.sk (=?iso-8859-2?B?SnVyYWogSGm1b3Zza/0=?=) writes:

> > Potrebuji nahradit v souboru jisty znak za jiny. Nejvhodnejsi asi
> > bude notoricky znama konstrukce "sed 's/co/cim/g'". Problem je ale v
> > tom, ze hledany retezec nedokazu zapsat - jde o dve binarni nuly.

V textovem editoru (napr. v emacsu pres Ctrl-q Ctrl-@) je mozne
zapsat do souboru z1.sed napr:

s/^@^@/MMM/g

Sed se pak spusti:

$ sed -f z1.sed < file

Muzete si overit, ze to nefunguje - problem je v sedu (GNU sed 3.02),
ktery tuto substituci neumi (jine kontrolni znaky zvlada). Zajimave
je, ze se to da obejit pres perl:

$ s2p z1.sed > z1.pl   # provede konverzi do perlu
$ perl z1.pl < file    # provede substituci

> Mam dojem, ze do regularneho vyrazu sa to neda zadat.

Da se to zapsat bud primo, viz vyse, nebo jako oktalove cislo
\000. GNU sed ale tuto syntaxi nezna.

> Pre takyto zapis by mal byt subor otvoreny binarny pre citanie aj
> zapis. napr.

Rozlisovani binarni - textove soubory je zalezitost MS-Dosu a MS-Win,
v Unixu se nelisi (souvisi to s interpretaci '\n' v libc).

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux