Wie gut ist die Leistung von grep/sed/awk bei sehr großen Dateien?

Wie gut ist die Leistung von grep/sed/awk bei sehr großen Dateien?

Ich habe mich gefragt, ob grep, sed und awk brauchbare Tools zum Suchen von Daten in sehr großen Dateien sind.

Nehmen wir an, ich habe eine 1 TB große Datei. Wenn ich den Text in dieser Datei verarbeiten möchte, wie sähe der Zeitrahmen aus, wenn ich die einzelnen Befehle grep, sed und awk verwende und sie auch mische?

Eine konkrete Antwort ist natürlich nicht möglich, da die Ergebnisse je nach Hardwarespezifikationen variieren, aber eine allgemeine Schätzung wäre hilfreich.

Antwort1

Generell würde ich sagen, grepist das Schnellste, sedist das Langsamste. Natürlich hängt das davon ab, was Sie genau tun. Ich finde, awkviel schneller als sed.

Sie können grep beschleunigen, wenn Sie keine echten regulären Ausdrücke, sondern nur einfache feste Strings benötigen (Option -F).

Wenn Sie grep, sed und awk zusammen in Pipes verwenden möchten, würde ich den grep-Befehl nach Möglichkeit an den Anfang stellen.

Zum Beispiel dieses:

grep -F "foo" file | sed -n 's/foo/bar/p'

ist normalerweise schneller als dies:

sed -n 's/foo/bar/p' file

Obwohl das grepin der ersten Zeile unnötig erscheint.

Übrigens können Sie diese Befehle beschleunigen, LC_ALL=Cwenn Sie mit einfachen ASCII-Textdateien arbeiten.

Beachten Sie, dass alle meine Erfahrungen auf den GNU-Befehlen basieren. Sie können auch verschiedene Implementierungen ausprobieren und die Geschwindigkeit vergleichen.

verwandte Informationen