grep wird höchstwahrscheinlich schneller sein:
# time awk '/USAGE/' imapd.log.1 | wc -l
73832
real 0m2.756s
user 0m2.740s
sys 0m0.020s
# time grep 'USAGE' imapd.log.1 | wc -l
73832
real 0m0.110s
user 0m0.100s
sys 0m0.030s
awk ist eine interpretierte Programmiersprache, während grep ein kompiliertes C-Code-Programm ist (das zusätzlich darauf optimiert ist, Muster in Dateien zu finden).
(Anmerkung:Ich habe beide Befehle zweimal ausgeführt, damit das Caching die Ergebnisse nicht potenziell verfälscht)
Weitere Details zu interpretierten Sprachen auf Wikipedia.
Wie Stephane in Kommentaren zu Recht darauf hingewiesen hat, kann Ihre Laufleistung aufgrund der Implementierung von grep und awk, die Sie verwenden, des Betriebssystems, auf dem es läuft, und des Zeichensatzes, den Sie verarbeiten, variieren.
Verwenden Sie das spezifischste und ausdrucksstärkste Werkzeug. Das Tool, das am besten zu Ihrem Anwendungsfall passt, ist wahrscheinlich das schnellste.
Als grobe Richtlinie:
- Suchen Sie nach Zeilen, die mit einer Teilzeichenfolge oder einem regulären Ausdruck übereinstimmen? Verwenden Sie grep.
- Auswahl bestimmter Spalten aus einer einfach getrennten Datei? Verwenden Sie cut.
- Durchführen von musterbasierten Substitutionen oder ... andere Dinge, die sed vernünftigerweise tun kann? Verwenden Sie sed.
- Benötigen Sie eine Kombination der oben genannten 3 oder eine printf-Formatierung oder Schleifen und Verzweigungen für allgemeine Zwecke? Verwenden Sie awk.
Wenn nur nach Zeichenfolgen gesucht wird und es auf Geschwindigkeit ankommt, sollten Sie fast immer grep
verwenden . Es ist um Größenordnungen schneller als awk
wenn es um grobe Suche geht.
source Die Funktions- und Leistungsunterschiede von sed, awk und anderen Unix-Parsing-Utilities
UTILITY OPERATION TYPE EXECUTION TIME CHARACTERS PROCESSED PER SECOND
(10 ITERATIONS)
------- -------------- --------------- -------------------------------
grep search only 41 sec. 489.3 million
sed search & replace 4 min. 4 sec. 82.1 million
awk search & replace 4 min. 46 sec. 69.8 million
Python search & replace 4 min. 50 sec. 69.0 million
PHP search & replace 15 min. 44 sec. 21.2 million