Re: sed und regex

From: Robert Barten <robert(at)barok.de>
Date: Wed, 7 Jan 2004 07:11:50 +0100

On Wed, Jan 07, 2004 at 06:56:14AM +0100, Bernd Walter wrote:
> On Wed, Jan 07, 2004 at 06:28:40AM +0100, Robert Barten wrote:
> > On Wed, Jan 07, 2004 at 06:01:36AM +0100, Bernd Walter wrote:
> > > On Wed, Jan 07, 2004 at 05:24:57AM +0100, Robert Barten wrote:
> > > > On Wed, Jan 07, 2004 at 04:05:04AM +0100, Simon 'corecode' Schubert wrote:
> > > > > >>das ist ja auch klar: die Shell macht die Umleitung auf `bar', und
> > > > > >>zwar *bevor* sie cat ausfuehrt. Da ist dann die Datei schon
> > > > > >>ueberschrieben.
> > > >
> > > > Das ist mir nicht klar. Die Ausgabe von cat wird durch die Pipe an sed
> > > > übergeben. Je nach Komplexität braucht sed länger als das Pipen, bei mir
> > > > in unserem Beispiel stets 99,5%. Ich habe keinen Unterschied zwischen
> > > > CPU-Leistungen (3 versch.) festgestellt, die Proportionen cat/sed
> > > > scheinen in diesem Beispiel wohl fast gleich zu sein. Gib cat etwas mehr
> > > > zu tun (s/spam/spamassassin/), und Du kommst an die 100% ran. Wie auch
> > > > immer, die Ausgabe von cat ist komplett an sed übergeben worden, nichts
> > > > spricht dagegen, dass sed nun die Quelle überschreibt*.
> > >
> > > Doch - die Pipe als solches ist nichts weiter als eine Durchreiche mit
> > > einem Puffer.
> > > Die Puffergröße ist je nach OS und Version unterschiedlich.
> > > Sobald du mehr Daten veschickst, als reinpasst wird gleichzeitig
> > > gelesen und geschrieben.
> > > Außerdem hast du absolut keine Garantie darüber ob zuerst gelesen oder
> > > zuerst die Ausgabedatei geleert wird - eigendlich soll es ja gleich-
> > > zeitig passieren, was die Frage nach der Reihenfolge eh verbietet.
> >
> > Deshalb macht die Shell auch keine Umleitung auf `bar', *bevor* sie cat
> > ausführt.
>
> Das ist albern - cat kann eine 100meg Datei nicht vollständig gelesen
> haben, wenn am anderen Ende bereits geschrieben werden *muss*.
> Es passt nur eine Systemabhängige endliche Menge an Daten in die Pipes.

Missverständnis: Das ist mir klar wie bereits im Backup-Beispiel
erwähnt, nur startet der Prozess cat doch noch vor der Umleitung auf
`bar'. Es ging immer ums Starten, und da sollte es doch sicher geordnet
von links nacht rechts zugehen, selbst wenn es sich um
Sekundenbruchteile handelt?

-- 
Robert Barten
To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 07 Jan 2004 - 07:13:51 CET

search this site