$_ =~ s/(\n| )//ig;
Besser:
$_ =~ s/[\n ]//ig;
Sicher, aber ...
- 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
- Alternative | vermeiden, wenn eine Zeichenklasse ausreicht - Alternative führt zu teurem backtracking, Zeichenklassen nicht.
Dito ...
Gruß, Bodo