Anonim

La stampa globale di espressioni regolari o semplicemente grep è uno dei comandi più versatili e comuni nei sistemi Unix e Linux. Il comando cerca file di input singoli o multipli e linee di pattern corrispondenti. Di conseguenza, si ottiene un output standard con le righe corrispondenti.

Se non specifichi un file, grep usa l'input standard per le letture e molto probabilmente sarà l'output di un altro comando. Nel complesso, grep presenta una sintassi semplice, sia che tu lo usi con o senza il nome del file.

Questo articolo offre una rapida panoramica della sintassi grep e alcuni comandi di base che è possibile utilizzare con o senza il nome del file.

Prima che inizi

Tutti i comandi grep seguono la stessa sintassi e ogni parametro ha una funzione specifica. Ecco la linea di esempio:

MODELLO grep

Puoi usare un numero di OPZIONI in grep per controllare l'output del comando e il numero inizia da zero. PATTERN indica il modello di ricerca che si desidera applicare. Per quanto riguarda il FILE, è qui che vanno i nomi dei file, ma il parametro può essere impostato su zero.

Ricerca di stringhe nell'output dei comandi

Come indicato, non è necessario utilizzare file di input specifici. L'output di un altro comando può essere utilizzato in grep per ottenere linee che corrispondono esattamente a un modello. Questo può essere usato per determinare quali processi sono attivi sul sistema. Questa è la sintassi del comando di esempio:

$ ps -ef | grep www-data

L'output che ottieni dovrebbe assomigliare a questo:

www-data 18247 12675 4 16:00? 00:00:00 php-fpm: pool www
root 18272 17714 0 16:00 pts / 0 00:00:00 grep –color = auto –exclude-dir = .bzr –exclude-dir = CVS –exclude-dir = .git –exclude-dir = .hg –exclude- dir = .svn www-data
www-data 31147 12770 0 ott22? 00:05:51 nginx: processo di lavoro
www-data 31148 12770 0 ott22? 00:00:00 nginx: processo gestore cache

C'è un modo per escludere la riga di comando che presenta processi grep. Per questo, è necessario utilizzare $ ps -ef | grep www-data | grep -v comando grep .

Grep Word Search

Puoi usare i comandi grep per cercare parole specifiche nei file sul tuo sistema. In effetti, non è necessario digitare un'intera parola. Puoi semplicemente usare gnu, per esempio, e il comando genera tutte le parole che contengono queste tre lettere. La sintassi del comando è:

$ grep gnu / usr / share / words

Dopo aver eseguito il comando, l'output dovrebbe essere simile al seguente:

Cygnus
gnu
interregno
lgnu9d
lignum
bottiglione
Magnuson
sfagno
wingnut

D'altra parte, puoi cercare solo quella specifica parola o stringa di lettere ed escludere tutto il resto. Per questo, è necessario aggiungere -w o –word - regexp alla sintassi. In questo caso, il comando di esempio è simile al seguente: $ grep -w gnu / usr / share / words .

Nota: per scopi grammaticali, alcuni comandi hanno un punto fermo alla fine. Non è necessario quel segno di punteggiatura per grep. Escluderlo quando si copia / incolla il comando.

Grep è sensibile al maiuscolo / minuscolo?

Tutti i comandi grep fanno distinzione tra maiuscole e minuscole per impostazione predefinita. Ciò significa che l'uso dei caratteri minuscoli e maiuscoli fa la differenza nel comando stesso. Tuttavia, è possibile aggiungere - i ( - ignore - case ) alla riga di comando e consentire al sistema di cercare sia le lettere maiuscole che minuscole.

Ad esempio, il comando di input potrebbe essere simile a $ grep -i Zebra / usr / share / words . Permette all'output di abbinare qualsiasi combinazione di lettere maiuscole e minuscole quando cerca zebra.

Numeri di riga

Utilizzare l'opzione –line-number o just -n per determinare il numero di righe con una stringa che corrisponde a un particolare modello di ricerca. Di conseguenza, si ottiene un output standard con un numero di riga davanti.

Il comando esatto potrebbe essere simile al seguente: $ grep -n 10000 / etc / services . Al momento dell'esecuzione, l'output fornisce tutte le corrispondenze che trova su 10000 righe. Dai un'occhiata al seguente esempio:

10423: ndmp 10000 / tcp
10424: ndmp 10000 / udp

File nelle cartelle

È possibile inserire un asterisco dietro un comando grep anziché un nome di file. Usando di nuovo i criteri gnu il comando appare come $ grep gnu * e l'output elenca i file che contengono gnu . È importante notare che questo tipo di comando restituisce una riga.

Nota: con grep, una linea fa riferimento a una sequenza di caratteri che si estendono fino a una determinata interruzione. A meno che non si raffini la ricerca, l'output può contenere interi paragrafi di informazioni.

Fai il prossimo passo con Grep

Questa guida graffia solo la superficie di ciò che puoi fare con grep. Potrebbe volerci un po 'di tempo per ottenere tutte le probabilità e le finalità, ma la sintassi segue un principio abbastanza semplice. E con un po 'di pratica, sarai in grado di affinare le tue ricerche alla perfezione, con o senza il nome del file.

Come eseguire grep senza il nome del file