Mein Ziel ist es, E-Mail-Adressen, die zum Yahoo! Familie von Domänen. In * nix-Systemen (ich werde Ubuntu verwenden), was sind die Vor- und Nachteile einer dieser Methoden für die Anpassung des Musters?Was ist die effizienteste Groß-/Kleinschreibung bei Groß- und Kleinschreibung?
Und wenn es eine andere, elegantere Lösung gibt, die ich mir nicht vorstellen konnte, bitte teilen.
Hier sind sie:
- Verwenden
grep
mit Option-i
:
grep -Ei "@(yahoo|(y|rocket)mail|geocities)\.com"
- Zeichen Übersetzen Sie zum Großbuchstaben oder Kleinbuchstaben dann
grep
:
tr [:upper:] [:lower:] < /path/to/file.txt | grep -E "@(yahoo|(y|rocket)mail|geocities)\.com"
- Fügen Sie für jedes Zeichen in dem Muster einen Zeichensatz (die unten würde natürlich nicht paßt so etwas wie „@ rOcketmail.com“, aber Sie bekommen die Idee von dem, was es werden würde, wenn ich jede geprüft Zeichen für Fall):
grep -E "@([yY]ahoo|([yY]|[rR]ocket)[mM]ail|[gG]eo[cC]ities)\.[cC][oO][mM]" /path/to/file.txt
Dies wäre nicht schwierig zu testen. Hast du es versucht? –
Haben Sie ein Benchmarking versucht? Ich vermute, dass Ihre erste Probe am schnellsten sein wird. Ich erwarte, dass dieses Problem eher durch Datei-I/O als Verarbeitungsgeschwindigkeit gedrosselt wird, da es in der Größe der Eingabe linear ist. Vorsicht vor [Mikrooptimierung] (http://blog.codinghorror.com/the-sad-tragedy-of-micro-optimization-theater/). – Floris
Eine Sache, die Sie beachten sollten, ist, dass die Erfassung von Gruppen teuer sein kann. Wenn Sie die gruppierten Werte nicht zurückgeben müssen, sollten Sie stattdessen '(? :)' verwenden. – CAustin