Bodo Thiesen: Probleme mit filesize > 1 GB???

Beitrag lesen

$_ =~ s/(\n| )//ig;

Besser:
$_ =~ s/[\n ]//ig;

Sicher, aber ...

  1. Speichern von Backreferences-Klammern vermeiden, wenn diese nicht benötigt werden [...]

Wird sowas beim Compilieren der regex nicht automatisch wegoptimiert, wenn's nicht gebraucht wird?

Zumindest bei sed macht's keinen (großen) Unterschied:

$ cat test.sh
#! /bin/sh

ls -l "$1" | awk '{ print $5 }'

set -m

( time sed -e 's/[ab]//g' < "$1" | wc -c ) > test.1.result 2>&1 &
( time sed -e 's/(a|b)//g' < "$1" | wc -c ) > test.2.result 2>&1 &

wait
wait

echo "Fertig"

cat test.1.result test.2.result
$ ./test.sh *5x18*
368261120
Fertig
365070706

real    5m31.565s
user    1m42.798s
sys     0m2.552s
365070706

real    5m47.543s
user    1m51.596s
sys     0m2.522s

  1. Alternative | vermeiden, wenn eine Zeichenklasse ausreicht - Alternative führt zu teurem backtracking, Zeichenklassen nicht.

Dito ...

Gruß, Bodo