Comando grep

Scopo

Ricerca un modello in un file.

Sintassi

grep [ -E | -F ] [ -i ] [ -h ] [ -H ] [ -L ] [ -r | -R ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Separatore ] ] { [ -e Elenco modelli ... ] [ -f File modello ... ] | Elenco modelli ... } [ File ... ]

Descrizione

Il comando grep ricerca il modello specificato dal parametro Modello e scrive ogni riga corrispondente nell'emissione standard. I modelli sono espressioni regolari limitate nello stile del comando ed o egrep. Il comando grep utilizza un algoritmo non deterministico compresso.

Il comando grep visualizza il nome del file contenente la riga corrispondente se si specificano più nomi nel parametro File. I caratteri con significato speciale nello shell ($, *, [, |, ^, (, ), \ ) devono essere tra apici quando vengono visualizzati nel parametro Modello. Quando il parametro Modello non è una stringa semplice, è necessario racchiudere l'intero modello tra apici singoli. In un'espressione come [a-z], - (segno meno) cml specifica un intervallo, in base alla sequenza di ordinamento corrente. Una sequenza di ordinamento può definire classi di equivalenza per l'utilizzo negli intervalli di caratteri. Se non viene specificato alcun file, grep presuppone l'immissione standard.

Note:
  1. Non eseguire il comando grep su un file speciale poiché produce risultati imprevedibili.
  2. Le righe di immissione non dovrebbero contenere il carattere NULL.
  3. I file di immissione devono terminare con il carattere di nuova riga.
  4. Il carattere di nuova riga non sarà corrisposto dalle espressioni regolari.
  5. Sebbene sia possibile specificare simultaneamente alcuni indicatori, alcuni indicatori sostituiscono altri. Ad esempio, l'opzione -l ha la precedenza su tutti gli altri indicatori. Se si specificano entrambi gli indicatori -E e -F, l'ultimo specificato ha la priorità.

Indicatori

-b Fa precedere ogni riga dal numero di blocco su cui è stata rilevata. Utilizzare questo indicatore per individuare i numeri di blocco disco in base al contesto. Non è possibile utilizzare l'indicatore -b con l'immissione da stdin o pipes.
-c Visualizza solo un conteggio delle righe corrispondenti.
-E Considera ogni modello specificato come ERE (extended regular expression). Un valore NULL per ERE corrisponde a ogni riga.
-e Elenco modelli Specifica uno o più modelli di ricerca. Questo funziona come un modello semplice ma è utile quando il modello inizia con un - (meno). Sarebbe opportuno separare i modelli con un carattere di nuova riga. E' possibile specificare un modello NULL con due caratteri di nuova riga adiacenti o con un segno virgolette seguito da un carattere di nuova riga ("\n). Ogni modello viene considerato come BRE (basic regular expression) a meno che non si specifichi anche l'indicatore -E o -F. Più indicatori -e e -f sono accettati da grep. Tutti i modelli specificati vengono utilizzati in caso di righe corrispondenti, ma non è specificato l'ordine di valutazione.
-F Considera ogni modello specificato come stringa invece che come espressione regolare. Una stringa NULL corrisponde a ogni riga.
-f File modello Specifica un file contenente i modelli di ricerca. Ogni modello dovrebbe essere separato da un carattere di nuova riga e una riga vuota viene considerata un modello NULL. Ogni modello viene considerato come BRE (basic regular expression), a meno che non si specifichi anche l'indicatore -E o -F.
-h Impedisce che il nome del file contenente la riga corrispondente venga accodato a tale riga. Evita la visualizzazione dei nomi file quando si specificano più file.
-H Se si specifica l'opzione -r o -R e un collegamento simbolico che fa riferimento a un file di tipo indirizzario sulla riga comandi, grep ricercherà i file dell'indirizzario a cui fa riferimento il collegamento simbolico e tutti i file nella gerarchi file al di sotto.
-i Ignora il maiuscolo o il minuscolo delle lettere quando si effettuano dei confronti.

-l Elenca solo i nomi dei file (una volta) che contengono le righe corrispondenti. Ogni nome file è separato da un carattere di nuova riga. Se si ricerca l'immissione standard, viene restituito un nome percorso (Immissione standard). L'indicatore -l con qualsiasi combinazione di indicatori -c e -n ha le stesse funzionalità dell'indicatore -l.
-L Se si specifica l'opzione -r o -R e si specifica o si individua un collegamento simbolico che fa riferimento a un file di tipo indirizzario sulla riga comandi durante il percorso di una gerarchia file, grep ricercherà i file dell'indirizzario a cui fa riferimento il collegamento simbolico e tutti i file nella gerarchi file al di sotto.Se si specifica sia -H che -L, l'ultima opzione specificata sulla riga comandi diventa effettiva.
-n Fa precedere ogni riga con il relativo numero riga nel file. Ogni file inizia sulla riga 1 e il contatore riga viene ripristinato per ogni file elaborato.
-p[Separatore] Visualizza l'intero paragrafo contenente le righe corrisposte. I paragrafi vengono delimitati da separatori di paragrafo, (secondo quanto specificato dal parametro Separator), che sono modelli nello stesso formato del modello di ricerca. Le righe contenenti i separatori di paragrafo vengono utilizzate solo come separatori; non vengono mai incluse nell'emissione. Il separatore di paragrafo predefinito è una riga vuota.
-q Evita la visualizzazione della scrittura nell'emissione standard, indipendentemente dalle righe corrispondenti. Esce con uno stato di zero se si seleziona una riga di immissione. L'indicatore -q con qualsiasi combinazione degli indicatori -c, -l e -n ha la stessa funzionalità dell'indicatore -q.
-r Ricerca tutti gli indirizzari in modo ricorsivo. Per impostazione predefinita, vengono seguiti i collegamenti alle agli indirizzari.
-R Ricerca tutti gli indirizzari in modo ricorsivo. Per impostazione predefinita, non vengono seguiti i collegamenti alle agli indirizzari.
-s Evita la visualizzazione dei messaggi di errore scritti generalmente per file inesistenti o non leggibili. Gli altri messaggi di errore vengono visualizzati.
-v Visualizza tutte le righe che non corrispondono al modello specificato.
-w Effettua una ricerca di parole.
-x Visualizza righe che corrispondono esattamente al modello specificato, senza caratteri aggiuntivi.
-y Ignora il maiuscolo/ minuscolo delle lettere durante i confronti.
Elenco modelli Specifica uno o più modelli da utilizzare durante la ricerca. I modelli vengono considerati come se fossero stati specificati utilizzando l'indicatore -e.
File Specifica il nome di un file in cui si effettua una ricerca per modelli. Se non viene fornita alcuna variabile File, viene utilizzata l'immissione standard.

Stato di uscita

Questo comando restituisce i seguenti valori di uscita:

0 E' stata rilevata una corrispondenza.
1 Non è stata rilevata alcuna corrispondenza.
>1 E' stato rilevato un errore di sintassi o un file non era accessibile (anche se sono state rilevate delle corrispondenze).

Esempi

  1. Per utilizzare un modello che contiene alcuni dei caratteri di corrispondenza modello *, ^, ?, [, ], \(, \), \{ e \}, immettere:

    grep  "^[a-zA-Z]"  pgm.s 

    In questo modo viene visualizzata ogni riga in pgm.s il cui primo carattere è una lettera.

  2. Per visualizzare tutte le righe che non corrispondono a un modello, immettere:
    grep   -v  "^#" pgm.s
    In questo modo viene visualizzata ogni riga in pgm.s il cui primo carattere non è # (cancelletto).
  3. Per visualizzare tutte le righe nel file file1 che corrispondono alla stringa abc o xyz, immettere:
    grep   -E  "abc|xyz"  file1
  4. Per ricercare $ (simbolo del dollaro) nel file denominato test2, immettere:

    grep \\$ test2

    I caratteri \\ (doppia barra retroversa) sono necessari per forzare il passaggio dello shell su un \$ (singola barra retroversa, simbolo del dollaro) sul comando grep. Il carattere \ (barra retroversa singola) indica al comando grep di considerare il seguente carattere (in questo esempio il $) come carattere letterale piuttosto che come un carattere di espressione. Utilizzare il comando fgrep per evitare di utilizzare i caratteri escape come la barra retroversa.

  5. Per effettuare una ricerca in modo ricorsivo /tmp per individuare i file che presentano la parola IBM senza ricorsione tramite il puntamento ai collegamenti, immettere:
    grep –R IBM /tmp
    OR
    grep –r -H IBM /tmp
  6. Per effettuare una ricerca in modo ricorsivo /tmp per individuare i file che presentano la parola IBM con ricorsione tramite i collegamenti, immettere:
    grep –r IBM /tmp
    OR
    grep -R -L IBM /tmp

File

/usr/bin/grep Contiene il comando grep.

Invia feedback |  Valuta questa pagina