bufrovani v roure

Petr Tomasek tomasek na etf.cuni.cz
Sobota Červen 15 21:43:17 CEST 2002


On Sat, Jun 15, 2002 at 09:29:24PM +0200, Peter Kruty (oozy) wrote:
> On Sat, Jun 15, 2002 at 12:09:59PM +0200, Pavel Kankovsky wrote:
> > On Fri, 14 Jun 2002, Peter Kruty (oozy) wrote:
> > 
> > >     Nie je to velmi pekne, ale mozte pouzit prikaz 'tac':
> > >     tr 'A' 'B' < soubor.txt | tac | tac > soubor.txt
> > 
> > Nemyslim, ze by tohle fungovalo, protoze posledni presmerovani (>)
> > soubor.txt prepise jeste driv, nez tr skonci s jeho ctenim. U maleho
> > souboru to muze projit (tr staci cely obsah nasat do svych bufferu, nez
> > se obsah prepise), u velkeho uz tezko.
> 
>     No mam dva argumenty preco sa mylite :). Prvy - program 'tac' vypisuje
> svoj vstup v obratenom poradi, teda logicky ho musi najprv cely nacitat (v
> pripade stdin, nie nutne pokial cita zo suboru) a potom od konca zacat
> vypisovat.
> 
>     Druhy - pozeral som zdrojove kody programu 'tac' a skutocne to tak
> robi. Pokial cita vstup z stdin, tak nacita cely vstup ten si ulozi, otoci
> a potom zase vypise na stdout. (textutils-2.0/src/tac.c)
> 
> > Spravne reseni (pro jednoduchost bez osetreni chybovych stavu) by bylo
> > asi nasledujici (neotestovano):
> > 
> >   tr 'A' 'B' < soubor.txt | \
> >   ( t=`mktemp /tmp/tXXXXXX`; cat > $t; cat < $t > soubor.txt; rm $t )
> 
>     Prave tomu temp-suboru sa chceme vyhnut.

???
A neni kapanek jedno, jestli to do toho /tmp/xxxx ukladate vy, nebo tac?

PT>

--
Petr Tomasek, http://www.etf.cuni.cz/~tomasek/




Další informace o konferenci Linux