Creatore | Ken Thompson |
---|---|
Prima versione | 1974 |
Sistema operativo | Tipo Unix e Unix |
genere | Utilità UNIX ( d ) |
grep è un programma di ricerca di stringhe da riga di comando , originariamente scritto per UNIX da Ken Thompson e successivamente migliorato utilizzando l' algoritmo Aho-Corasick .
Ci sono molte implementazioni di grep su sistemi differenti , specialmente sotto tutti i sistemi tipo UNIX. Una delle implementazioni più popolari è GNU grep.
Storicamente, il nome deriva da uno dei comandi dell'editor di testo ed disponibili su UNIX, la cui sintassi è:
:g/re/pQuesto mezzo di comando "Ricerca g verall partite con l' espressione regolare (in inglese, r egular e Xpression ) e stampa ( p tampa linee a cui corrisponde)." Per impostazione predefinita, grep si comporta esattamente come questo comando. Tuttavia, ci sono molte opzioni della riga di comando per modificarne il comportamento.
Il comportamento usuale di grep è quello di prendere un'espressione regolare come argomento, leggere i dati dallo standard input o da un elenco di file e scrivere righe che contengono corrispondenze all'espressione regolare allo standard output.
Ad esempio, grep ti consente di trovare righe contenenti il nome Durand in un file di contatti telefonici:
$ grep Durand ListeNuméros.txtrestituirà solo le righe contenenti Durand :
Guénolé Durand, 0723237694 Bernard Durand, 0966324355grep è un filtro , che consente di combinarlo con altri comandi, sotto forma di una pipeline .
Le sue prestazioni e la facilità d'uso lo rendono adatto per la ricerca efficiente di stringhe in un complesso albero di file. Viene utilizzato ad esempio per trovare tutte le occorrenze del nome di una funzione nel codice sorgente di un programma o di stringhe nei file di configurazione. Nonostante la presenza di funzionalità simili in molti programmi, come Emacs o vi , molti utenti preferiscono usare grep direttamente, anche quando usano quei programmi.
Il comando grep è limitato a certi aspetti dei personaggi. Ad esempio, non consente la ricerca nei file codificati in UTF-16. Tuttavia, le ricerche sono possibili se il file è stato precedentemente convertito nel formato UTF-8. Tuttavia, il supporto per UTF-8 è possibile solo quando si considera ogni carattere come una sequenza di byte.
Esistono molti derivati di grep. Tra loro :
Nota che grep egrep fgreped è rgrepstato distribuito in diversi file binari separati su alcune versioni di Unix, motivo per cui sono ancora spesso accessibili. Ma in realtà oggi hanno esattamente gli stessi effetti delle varie opzioni grep.
La maggior parte di queste varianti di grep sono state portate su molti sistemi operativi. Questa è chiamata implementazione moderna di grep.
Molti altri comandi contengono la parola "grep". Ad esempio, l'utilità pgrep visualizza il numero di processi i cui nomi corrispondono all'espressione regolare .
GNU grep è l'implementazione del comando grep UNIX del progetto GNU avviato da Richard Stallman negli anni '80. È un software gratuito distribuito secondo i termini della GNU General Public License .
Il comando grep è stato originariamente scritto per UNIX da Ken Thompson . Come parte del progetto GNU , Mike Haerkal, implementerà grep nel software libero prima della fine degli anni '80.
Il progetto GNU grep implementazione è ampiamente usato oggi, per Linux , FreeBSD , ma anche i sistemi Mac OS X. .
Come acronimo , "grep" è una parola pronunciabile, sia in francese che in inglese. Gli utenti di grep di lingua inglese spesso usano il suo nome come verbo, che significa "cercare qualcosa in un file" , come si farebbe con l'utilità grep. L'oggetto diretto quindi designa i file in cui cercare: “ Kibo ha rubato il suo nome alla sua bobina Usenet . (Che significa: "Kibo ha cercato il suo nome nella sua bobina Usenet ."). In francese, la parola è usata più raramente come verbo del primo gruppo: "greppe les logs per vedere se il server ha ricevuto la tua richiesta". "
Per estensione, la parola "grep" è diventata anche un sinonimo delle espressioni regolari stesse. Molti editor o elaboratori di testi oggi offrono funzionalità di ricerca utilizzando espressioni regolari, che spesso chiamano "strumento grep" o "modalità grep", in cui è possibile inserire modelli grep. Questa imprecisione crea confusione, soprattutto in ambienti non UNIX.
Il comando findstr di Windows è in realtà QGrep, un GREP adatto per Windows. Supporta le espressioni regolari ma la sua sintassi è leggermente diversa da grep.
Per avere lo stesso grep in Windows, è necessario installare cygwin o più semplicemente grep del progetto GnuWin32 . Una versione adatta può essere trovata anche sul sito di Tim Charron (vedi link esterni sotto).
Il comando include in Cisco IOS esegue le funzioni di base di grep. Ad esempio, il programma show running-config | include 192.168.1.1 visualizzerà le righe della configurazione attiva che contengono l'indirizzo 192.168.1.1.
ack, scritto in Perl, è un software definito come "ack, meglio di grep, un potente strumento di ricerca per i programmatori":