Twilo hat geschrieben:die Zeiten sind von ein FreeBSD 6.2 System gemessen
Für aussagekräftige Zeitmessungen sollte man das System jedes Mal neu booten und das Programm dann oft am Stück durchlaufen lassen (100x oder so). Dann bekommt man vergleichbare Werte. Sonst zeigen sie nur ungefähre Größenordnungen auf, wenn überhaupt.
Code: Alles auswählen
<test.tmp sed -n 's/^Result//; t rest ; b ; :rest ; n; p ; b rest ; d'
sed: 1: "s/^Result//; t rest ; b ...": undefined label 'rest ; b ; :rest ; n; p ; b rest ; d'
Das Problem ist, dass Labels eigentlich bis zum Zeilenende gehen und sie deshalb in Einzeilern schlecht nutzbar sind.
Aber du kannst mal versuchen das Leerzeichen nach `:rest' zu entfernen, also den Strichpunkt direkt anschließen lassen, ob das hilft.
nur auf mein Debian lauffähig, daher die Zeitmessung auf ein Debiansystem
Das ist dann natürlich überhaupt nicht mehr vergleichbar. Wenn dann musst du alle Messungen (auch) auf dem Debian-System machen.
Meillo hat geschrieben:Zwar nicht ganz trivial, aber dafür sogar ganz korrekt, weil die "Result ..." Zeile auch weg ist, wie ja eigentlich gefordert.
Das müsste man bei den anderen Varianten ja auch noch einbauen, oder ein `sed 1d' anhängen.
die Zeile muss nicht unbedingt mit ausgegeben werden - schöner ist es jedoch wenn sie vorhanden ist.
Nur weil du es so in deinem ersten Post geschrieben hattest. Du hattest wohl nicht das geschrieben was du meintest.
die Variante mit tac bzw. tail -r ist vond er Perfomance her die beste
Vermutung: Dies wird sich ändern, wenn du _große_ Datenmengen verwendest, denn `tac' (bzw. `tail -r') kann erst anfangen zu arbeiten, wenn _alle_ Zeilen eingelesen wurden. Es müssen also 2x alle Daten zwischengepuffert werden.
Ich empfehle
Das ist die IMHO simpelste und klarste Variante.
@Duff: Dieses `cat test.tmp |' kannst du dir sparen in dem du stdin umleitest. Das spart einen Prozess, ist nicht weniger lesbar und 1:1 anwendbar.