BreiteSeites Blog

grep vs. pcregrep

leave a comment

Wer (komplexe) Perl-Kompatible reguläre Ausdrücke auf der Linux-Konsole ausführen möchte, der hat zwei Möglichkeiten.

  1. “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
  2. 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:

1
2
3
4
5
time grep --color=none -o -E '^[0-9.]+\s' access.log > /dev/null
 
real    0m1.890s
user    0m1.864s
sys     0m0.026s
1
2
3
4
5
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.

Written by breiti

Februar 23rd, 2011 at 8:39 pm

Posted in Computer

Tagged with benchmark, linux

Leave a Reply