Wer (komplexe) Perl-Kompatible reguläre Ausdrücke auf der Linux-Konsole ausführen möchte, der hat zwei Möglichkeiten.
- "grep -P" benutzen. Dies ist allerdings nicht immer möglich. Debian kompiliert die Unterstützung für diese Funktion in seine Standardpakete nicht ein. Wer sich dennoch grep nicht selbst kompilieren möchte, der kann
- das Paket pcregrep benutzen.
pcregrep ist zudem schneller als grep -E.
Hier ein direkter Vergleich um IPs aus einem 15 MB großen access.log zu filtern:
time grep --color=none -o -E '^[0-9.]+\s' access.log > /dev/null
real 0m1.890s
user 0m1.864s
sys 0m0.026s
time pcregrep -o '^[0-9.]+(?=\s)' access.log > /dev/null
real 0m0.050s
user 0m0.046s
sys 0m0.004s
Das bedeutet, pcregrep ist ca. 4-Mal so schnell wie das Standardgrep. Dies kann bei größeren Log-Dateien (im GB-Bereich) schnell einen Unterschied in Minutengröße zur Folge haben.