Marko Käning, Dienstag 19 Oktober 2010:
Weil das Verarbeiten von Regexps prinzipiell eine langsamere Angelegenheit ist. Das grep-Kommando ist speziell dafür optimiert, einzelne Zeilen rauszusuchen, sed hingegen muss alles interpretieren.
Das würde bedeuten, daß die an sich weniger eleganten Ketten grep | sed | awk... durchaus ihre Berechtigung haben. Der Preis für den Aufruf der Programme scheint niedriger zu sein als der Vorteil, den man durch die Spezialisierung wieder rausholt. # bash -c "time awk '/delay=/ {print}' /var/log/mail > /dev/null" real 0m0.254s user 0m0.252s sys 0m0.002s # bash -c "time sed '/delay=/p' /var/log/mail > /dev/null" real 0m0.225s user 0m0.225s sys 0m0.000s # bash -c "time grep delay= /var/log/mail > /dev/null" real 0m0.017s user 0m0.013s sys 0m0.005s awk ist am langsamsten, grep mit großem Abstand am schnellsten, bei gleicher Aufgabe. Und nochwas: # time grep relay= /var/log/mail | grep delay= > /dev/null real 0m0.021s user 0m0.007s sys 0m0.014s # time grep relay=.*delay= /var/log/mail > /dev/null real 0m0.030s user 0m0.027s sys 0m0.002s Die Verarbeitung des .* ist offenbar auch erheblich teurer, als die grep | grep-Kette. Wieder was gelernt... Danke+Gruß! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org