2012-05-18 5 views
15

Wenn Ihre Datei Warum alle Zeilen würde egrep '(?=apples)app' file nicht abholen regex Look-Ahead-Verwendung, egrep

apples are good 
apple cider is also good 

enthält?

Mit egrep 2.5.1 auf MAC

Antwort

16

Erweitern regulären Ausdruck hat keine positive Vorgriff Funktion. Siehe the regex flavor comparison

+0

auf Mac OS können Sie GNU grep erhalten (die PCRE Unterstützung hat) durch [Homebrew-Betrogenen] (https://github.com/Homebrew/homebrew-dupes) –

+3

Der Link oben scheint nicht mehr zu habe einen "Regex-Flavor-Vergleich". Es ist jetzt im Grunde nur eine Seite, die das "Regex Buddy" -Programm für $ 39.95 verhöhnt. Ich denke, so etwas wie der Geschmack Vergleich ist hier verfügbar: http://www.greenend.org.uk/rjk/tech/regexp.html, aber es ist erstaunlich schwierig, Informationen dazu zu finden. –

+5

Sie können dies unter Linux mit dem '-P' -Flag tun: ** - P, --perl-regexp: Interpretieren Sie PATTERN als regulären Perl-Ausdruck. Dies ist sehr experimentell und grep -P kann vor nicht implementierten Funktionen warnen. ** Ungewöhnlich ist, dass die BSD-Version (Mac, Darwin, vis-a vis Jahr 2010) "-P" tangential am Ende der Dokumentation referenziert, aber tut nicht als brauchbares Flag definieren. Mac-Benutzer können eine neuere Version von [Grep auf der Gnu-Site] (http://www.gnu.org/software/grep/) herunterladen. Es ist überraschend, dass sogar OS X 10.9 mit einer alten Version mit vielen Fehlern gebündelt ist. – ingyhere