2012-05-18 13 views
15

Se il file contieneUtilizzando regex lookahead, egrep

apples are good 
apple cider is also good 

Perché sarebbe egrep '(?=apples)app' file riuscire a raccogliere tutte le righe?

Utilizzando egrep 2.5.1 su MAC

risposta

16

estesa espressione regolare non ha positiva funzione look-ahead. Vedere the regex flavor comparison

+0

In Mac OS, è possibile ottenere GNU grep (che ha il supporto PCRE) attraverso [homebrew-gonzi] (https://github.com/Homebrew/homebrew-dupes) –

+3

Il link qui sopra non sembra più avere un "confronto gusto regex". È fondamentalmente ora solo un sito hawking del programma "Regex Buddy" per $ 39,95. Penso che qualcosa come il confronto dei sapori sia disponibile qui: http://www.greenend.org.uk/rjk/tech/regexp.html ma è sorprendentemente difficile trovare informazioni su questo. –

+5

Puoi farlo su Linux usando il flag '-P': ** - P, --perl-regexp: interpreta PATTERN come un'espressione regolare Perl. Questo è altamente sperimentale e grep -P potrebbe mettere in guardia su funzionalità non implementate. ** Ciò che è insolito è che la versione BSD (Mac, Darwin, vis-a-vis anno 2010) fa riferimento a '-P' tangenzialmente nella parte inferiore della documentazione ma fa non definirlo come una bandiera utilizzabile. Gli utenti Mac possono scaricare una versione più recente di [Grep nel sito Gnu] (http://www.gnu.org/software/grep/). È sorprendente che persino OS X 10.9 sia in bundle con una vecchia versione con molti bug. – ingyhere