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