Provided by:
manpages-it_0.3.4-5_all 
NOME
grep, egrep, fgrep - stampa le righe che corrispondono ad un modello
SINTASSI
grep [ -[[AB] ]num ] [ -[CEFGVBchilnsvwx] ] [ -e ] modello | -ffile ] [
file... ]
DESCRIZIONE
Grep ricerca nei file d’ingresso indicati (o nello standard input se
non è specificato alcun file, o è dato il nome di file -) le righe che
contengono una corrispondenza ("match") al modello ("pattern")
specificato. Di default, grep mostra solo le righe in cui è trovata la
corrispondenza.
Ci sono tre varianti principali di grep, controllate dalle seguenti
opzioni.
-G Interpreta modello come una espressione regolare base (si veda
sotto). Questo è il comportamento di default.
-E Interpreta modello come una espressione regolare estesa (si veda
sotto).
-F Interpreta modello come un elenco di stringhe prefissate,
separate da newline, di ognuna delle quali deve essere cercata
un’istanza.
Inoltre, sono disponibili i due programmi alternativi egrep e fgrep.
Egrep è simile (ma non identico) a grep -E, ed è compatibile con lo
storico comando Unix egrep. Fgrep è identico a grep -F.
Tutte le varianti di grep capiscono le seguenti opzioni:
-num Le corrispondenze saranno stampate con le num righe precedenti e
successive. Comunque, grep non stamperà mai una riga più di una
volta.
-A num Stampa anche le num righe successive alle righe in cui sono
trovate le corrispondenze.
-B num Stampa anche le num righe precedenti alle righe in cui sono
trovate le corrispondenze.
-C Equivalente a -2.
-V Stampa il numero di versione di grep nello standard error.
Questo numero di versione dovrebbe essere incluso in tutti i
rapporti sui bachi (si veda sotto).
-b Stampa lo spiazzamento in byte all’interno del file d’ingresso
prima di ognuna delle righe dell’output.
-c Sopprime l’output normale; stampa invece, per ognuno dei file
d’ingresso, il numero di righe in cui è trovata la
corrispondenza. Con l’opzione -v (si veda sotto), conta le
righe che non corrispondono.
-e modello
Usa modello come modello; utile per proteggere i modelli che
iniziano con -.
-f file
Ottiene il modello da file.
-h Sopprime la stampa dei nomi dei file in output quando la ricerca
è fatta su più file.
-i Ignora le differenze tra i caratteri maiuscoli e minuscoli sia
in modello che nei file d’ingresso.
-L Sopprime il normale output; stampa invece il nome di ognuno dei
file d’ingresso dai quali normalmente non sarebbe stato stampato
niente.
-l Sopprime il normale output; stampa invece il nome di ognuno dei
file d’ingresso dai quali normalmente sarebbe stato stampato
qualcosa.
-n Prefissa ogni riga dell’output con il numero di riga all’interno
del suo file d’ingresso.
-q Quiet; sopprime l’output normale.
-s Sopprime i messaggi d’errore sui file non esistenti o non
leggibili.
-v Inverte il senso della corrispondenza, per selezionare le righe
che non corrispondono.
-w Seleziona solo quelle righe contenenti corrispondenze che
formano parole intere. Il test è siffatto: la sottostringa
corrispondente deve o essere all’inizio di una riga, o preceduta
da un carattere che non costituisce una parola. Similmente, deve
essere o alla fine di una riga o seguita da un carattere che non
costituisce una parola. I caratteri che costituiscono parole
sono le lettere, i numeri e l’underscore (‘_’).
-x Seleziona solo le corrispondenze in cui la corrispondenza è
tutta la riga.
ESPRESSIONI REGOLARI
Una espressione regolare ("regular expression") è un modello che
descrive un insieme di stringhe. Le espressioni regolari sono costruite
in modo analogo alle espressioni aritmetiche, usando diversi operatori
per combinare espressioni più piccole.
Grep comprende due diverse versioni di sintassi delle espressioni
regolari: «base» e «estesa». In GNU grep, non c’è alcuna differenza
nelle funzionalità disponibili usando una o l’altra sintassi. In altre
implementazioni, le espressioni regolari base sono meno potenti. La
seguente descrizione si applica alle espressioni regolari estese; le
differenze per le espressioni regolari base sono riassunte più avanti.
I blocchi costituenti fondamentali sono le espressioni regolari che
corrispondono ad un singolo carattere. La maggior parte dei caratteri,
comprese tutte le lettere e i numeri, sono espressioni regolari che
corrispondono a loro stessi. Qualsiasi metacarattere con un significato
speciale può essere protetto prefissandolo con un backslash (’\’).
Una lista di caratteri racchiusi tra [ e ] permette la corrispondenza
di qualsiasi singolo carattere in quella lista; se il primo carattere
della lista è il caret ^ allora permette la corrispondenza con
qualsiasi carattere che non è nella lista. Per esempio, l’espressione
regolare [0123456789] corrisponde ad una cifra singola qualsiasi. Un
intervallo di caratteri ASCII può essere specificato dando il primo e
l’ultimo carattere, separati da un trattino. Inoltre, sono predefinite
con un nome alcune classi di caratteri. I loro nomi spiegano già tutto
(N.d.T: se si è madrelingua inglese), e sono [:alnum:] (alfanumerici),
[:alpha:] (alfabetici), [:cntrl:] (di controllo), [:digit:] (cifre),
[:graph:] (grafici), [:lower:] (minuscoli), [:print:] (di stampa),
[:punct:] (punteggiatura), [:space:] (spazio), [:upper:] (maiuscoli), e
[:xdigit:] (cifre esadecimali). Per esempio, [[:alnum:]] significa
[0-9A-Za-z], ad eccezione che quest’ultima dipende dalla codifica ASCII
dei caratteri, mentre la prima è portabile (si noti che le parentesi
quadre nei nomi delle classi sono parte del nome simbolico, e devono
essere incluse in aggiunta alle parentesi che delimitano un elenco).
La maggior parte dei metacaratteri perdono il loro significato speciale
all’interno di un elenco. Per includere il carattere ] lo si posizioni
per primo nella lista. Similmente, per includere un ^ lo si posizioni
ovunque tranne che per primo, mentre per includere un - lo si metta per
ultimo.
Il carattere . corrisponde ad un qualsiasi singolo carattere. Il
simbolo \w è un sinonimo per [[:alnum:]] e \W è un sinonimo per
[^[:alnum]].
Il caret ^ e il segno di dollaro $ sono metacaratteri che corrispondono
rispettivamente alla stringa vuota all’inizio e alla fine di una riga.
Il simboli \< e \> corrispondono rispettivamente alla stringa vuota
all’inizio e alla fine di una parola. Il simbolo \b corrisponde alla
stringa vuota presente ai "bordi" di una parola, e \B corrisponde alla
stringa vuota assicurandosi che non sia ai "bordi" di una parola.
Una espressione regolare che corrisponde a un carattere singolo può
essere seguita da uno dei diversi operatori di ripetizione:
? Ciò che precede è opzionale e la corrispondenza può esserci al
più una volta.
* La corrispondenza a ciò che precede può esserci zero o più
volte.
+ La corrispondenza a ciò che precede può esserci una o più volte.
{n} La corrispondenza a ciò che precede deve esserci esattamente n
volte
{n,} La corrispondenza a ciò che precede deve esserci n o più volte.
{,m} La corrispondenza a ciò che precede deve esserci al più m volte.
{n,m} La corrispondenza a ciò che precede deve esserci almeno n volte,
ma non più di m volte.
Due espressioni regolari possono essere concatenate; l’espressione
regolare risultante corrisponde a qualsiasi stringa formata
concatenando due sotto stringhe che corrispondono rispettivamente alle
due sottoespressioni che sono state concatenate.
Due espressioni regolari possono essere riunite ("join") con
l’operatore di "infissione" |; l’espressione regolare risultante
corrisponde a qualsiasi stringa che corrisponde ad una delle
sottoespressioni.
La ripetizione ha precedenza sulla concatenazione, che a sua volta ha
precedenza sull’alternanza. Un’intera sottoespressione può essere
racchiusa tra parentesi per modificare queste regole di precedenza.
Il riferimento all’indietro ("backreference") \n, dove n è una cifra
singola, corrisponde alla sottostringa che in precedenza ha corrisposto
alla n-esima sottoespressione parentesizzata dell’espressione regolare.
Nelle espressioni regolari base i metacaratteri ?, +, {, |, (, e )
perdono il loro significato speciale; si usino invece le versioni con
backslash \?, \+, \{, \|, \(, e \).
In egrep il metacarattere { perde il suo significato speciale; si usi
invece \{.
DIAGNOSTICA
Normalmente, lo stato d’uscita è 0 se sono state trovate delle
corrispondenze, e 1 se non ne sono state trovate (l’opzione -v inverte
il senso degli stati d’uscita). Lo stato d’uscita è 2 se c’era un
errore di sintassi nel modello, se i file d’ingresso erano
inaccessibili, o in caso di altri errori di sistema.
BACHI
Inviare i rapporti sui bachi ("bug report") a bug-gnu-
utils@prep.ai.mit.edu. Assicurarsi di includere la parola «grep» da
qualche parte nel campo «Subject:».
Numeri di ripetizioni elevati nel costrutto {m,n} possono far sì che
grep usi un sacco di memoria. Inoltre, alcune altre oscure espressioni
regolari necessitano di tempo e spazio esponenziali, e possono far sì
che grep vada in out of memory.
I riferimenti all’indietro sono molto lenti, e possono richiedere tempo
esponenziale.