2013-10-16 12 views
15

Sto cercando di utilizzare grep come sono abituato da Linux, con tutte le sue fantastiche funzioni e tutta la potenza di RegEx, ... ma su Mac OS X non funziona come mi aspetto.grep funziona in modo diverso su OSX

Se utilizzo "-P" (Perl Regex) mi dà l'output "usage" (--help). Qui troviamo il parametro "-P" nell'elenco dei parametri "-abcDEFGHhIiJLlmnOoPqRSsUVvwxZ" ... Ancora non funziona.

Un altro esempio è l'asterisco o il segno più. sto cercando questo http://wiki.bash-hackers.org/howto/conffile

Per controllare un file di configurazione per i contenuti non appropriati che istruzione usa:

if egrep -q -v '^#|^[^ ]*=[^;]*' "$configfile"; then 
    echo "Config file is unclean, cleaning it..." >&2 
    # filter the original to a new file 
    egrep '^#|^[^ ]*=[^;&]*' "$configfile" > "$configfile_secured" 
    configfile="$configfile_secured" 
fi 

E non funziona su linee come questa:

DATABASE=some_database; ls -la 

Che cosa sto facendo sbagliato? Causa tutto funziona perfettamente su macchine Linux.

+0

Questa domanda sembra essere fuori tema perché si tratta di uno sproloquio sottovalutato. –

+0

La versione di grep inclusa con 10.8 non supporta '-P'. 'grep -V' restituisce' grep (BSD grep) 2.5.1-FreeBSD' in 10.8 e 'grep (GNU grep) 2.5.1' in 10.7. È possibile installare una versione più recente di GNU grep con 'brew tap homebrew/dupes; brew install homebrew/dupes/grep' – user495470

+3

Non proprio giusto, Jonathan. Avrei dovuto scegliere meglio la mia lingua, ma la domanda rimane ancora. Sto facendo domande a GET informato, quindi è chiaro, che sono al punto di porre la domanda "sotto-informato". Ho avuto grandi risposte però. Grazie a tutti voi. – func0der

risposta

7

ubuntu (beh, la mia antica casella di Ubuntu 8 Sono seduto accanto ...):

$ grep -V 
GNU grep 2.5.3 

OS X:

$ grep -V 
grep (BSD grep) 2.5.1-FreeBSD 

Sì; sono programmi diversi. OS X non è Linux. È basato su BSD.

Se si desidera la versione GNU di grep, con le sue varie estensioni, è possibile installarlo facilmente con Homebrew.

+0

Installato con Homebrew ma 'grep -V' stampa ancora' FreeBSD'. –

+3

Devi usare 'ggrep'. –

+0

potresti anche creare un alias per il tuo ggrep in modo che venga usato al posto di quello del sistema. – mjp

3

Mac OS X è basato su BSD, e non usa gli strumenti GNU a cui sei abituato. Avrei letto su POSIX grep perché senza estensioni GNU continuerai ad agitarti senza motivo. Tutto dovrebbe essere ancora possibile, ma non nel modo esatto in cui sei abituato.

+0

Grazie. Ma hai una spiegazione per la parte non corrispondente della mia domanda? Il paragrafo sull'estensione delle espressioni regolari (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_04) che dice che può portare a risultati indefiniti per caratteri come "*" e "+" non sembra applica qui. Allora perché non ottengo alcun risultato? – func0der

+0

@ func0der scusa non parlo regex ';-)'. La soluzione più rapida per te è installare GNU grep, sia dal sorgente che tramite homebrew/macports/... – rubenvb

+0

Sì, ma non sto scrivendo quegli script per me, ma per i colleghi che usano out of the box osx. Grazie comunque per la risposta :) – func0der

Problemi correlati