Sed

Marcel Kolaja xkolaja na aurora.fi.muni.cz
Úterý Září 3 21:06:12 CEST 2002


On Tue, Sep 03, 2002 at 08:15:02PM +0200, Alexei Sveshnikov wrote:

> > > > cat soubor.txt | sed -e 's/RET1/RET2/g' > soubor.txt
> > > hmm, hodne spatnej napad, zkuste si to spustit
> > Nerikam ze to je nezavisle na operacnim systemu. Ale na RedHat 7.3 je to
> > vyzkousene a funguje.
> Presneji receno to zalezi na poradi, v kterem je presmerovan vstup/vystup
> z 'cat' do 'sed' a ze 'sed' do souboru. Bezpecneji je asi pouzivat
> konstrukci typu
> cat soubor.txt | (sleep 1; sed -e 's/RET1/RET2/g' >soubor.txt)
> Souhlasim ale, ze pokud je na disku dost mista je lepsi pouzivat docasny
> soubor.

Přesněji řečeno i tohle je špatně (prostě to může fungovat, ale taky
nemusí):

xkolaja na triton(pts/1):~/tmp$ ls -l soubor.txt 
-rw-------    1 xkolaja  student  22905937 zář  3 20:56 soubor.txt
xkolaja na triton(pts/1):~/tmp$ cat soubor.txt | (sleep 1; sed -e 's/RET1/RET2/g' >soubor.txt)
xkolaja na triton(pts/1):~/tmp$ ls -l soubor.txt 
-rw-------    1 xkolaja  student      8192 zář  3 20:58 soubor.txt
xkolaja na triton(pts/1):~/tmp$ 

Pokud používáte takovéhle skripty, tak se taky jednoho dne můžete divit,
proč Vám fungující skript najednou přestal fungovat. Jednoduše musíte
použít konstrukci typu sed; mv nebo perl (nebo ještě něco jiného ale
určitě ne tohle :-)).

> Alexej Sveshnikov


S pozdravem

Marcel Kolaja                              http://www.fi.muni.cz/~xkolaja/
NLPlab FI MU                                        http://nlp.fi.muni.cz/
--------------------------------------------------------------------------
"If you want the holes in your knowledge showing up try teaching someone."
       -- Alan Cox


Další informace o konferenci Linux