La sintassi Grep più comune

La sintassi Grep più comune
In Linux, grep è uno dei tanti strumenti che vengono preinstallati. In realtà è un acronimo che sta per "stampa globale di espressione regolare." IL grep Il comando può cercare una stringa nei file descritti dall'espressione regolare. Se viene trovata una partita, grep Stampa il risultato nella console.

In questa guida, daremo una rapida occhiata ad alcune delle implementazioni più comuni del grep comando.

IL grep struttura di comando

Qualsiasi comando grep avrà i seguenti componenti.

$ grep

Comune grep sintassi

Ricerca di una stringa in un file

Questo è il modo più semplice per usare il grep comando. Nel seguente esempio, grep Cercherà il termine "dkms" (senza quotazioni) nel file Apt-Packages installato.TXT (contenente tutti i pacchetti APT installati nel sistema).

$ grep "dkms" apt-packages installato.TXT

Si consiglia di utilizzare doppie citazioni ("") per indicare una stringa perché una stringa può contenere caratteri speciali e spazi bianchi.

Ricerca di una stringa in più file

IL grep Il comando può anche eseguire le ricerche su più file. Tutto quello che devi fare è specificare i file in sequenza.

$ grep "dkms" apt-packages-instald-1.TXT APT-PACKAGES INSTALLED-2.TXT

Invece di specificare manualmente i file, puoi anche usare l'espressione jolly (*).

$ grep "dkms" apt-packages installato-*.TXT

E se volessimo eseguire la ricerca su tutti i file nella directory corrente? Basta impostare l'espressione del jolly per indicare ogni file nella directory corrente.

$ grep "dkms" *

Come possiamo vedere, grep Ho trovato tutte le partite nei file di testo ma non ha gestito bene le directory. Questo porta perfettamente al punto successivo.

Ricerca sottodirectory

Per impostazione predefinita, grep Non cercherò le sottodirectory per le partite. Se vuoi essere grep per farlo, devi dirlo aggiungendo la bandiera “-r."

Prova a eseguire di nuovo la ricerca precedente con questo nuovo trucco.

$ grep -r "dkms" *

Si noti che dati i livelli di sottodirectory e il numero di file da setacciare, grep può richiedere del tempo. Sullo schermo, apparirà come se fosse congelato. Quindi, non farti prendere dal panico se affronti situazioni simili.

Controllando il numero di riga della partita

Avere il numero di linea del grep La partita può essere una manna dal cielo. Per vedere il numero di riga della partita, usa il flag “-n."

$ grep -n "dkms" *.TXT

Contare il numero di corrispondenze

IL grep Il comando può contare il numero di corrispondenze nel risultato della ricerca. Per fare ciò, usa il flag “-l."

$ grep -c "dkms" *.TXT

Qui, grep mostrerà il numero di corrispondenze per ogni file cercato.

Nome stampa dei file corrispondenti

A volte, vuoi sapere quali file abbinavano il modello specificato senza il risultato della ricerca. Se è così, usa il flag “-l."

$ grep -l "dkms" *.TXT

Stampa le righe prima e dopo la stringa corrispondente

Per impostazione predefinita, grep Stamperà la riga che trova la stringa specificata. Tuttavia, possiamo calibrare l'output per stampare un paio di righe prima e/o dopo la corrispondenza della stringa.

Grep stamperà la stringa corrispondente insieme a 5 righe precedenti sulla console nel comando seguente, grazie al flag "-b".

$ GREP -B 5 "DKMS" APT-PACKAGES INSTALLED-1.TXT

Allo stesso modo, possiamo anche dire a Grep di stampare diverse righe dopo aver trovato la stringa corrispondente. Per farlo, useremo la bandiera “-a."Nel seguente esempio, grep Stamperò 5 righe dopo aver trovato la partita.

$ GREP -A 5 "DKMS" APT-PACKAGES INSTALLED-1.TXT

Ora, è tempo di combinare entrambe queste caratteristiche.

$ GREP -A 5 -B 5 "DKMS" APT-PACKAGES INSTALLED-1.TXT

Il comando diventa inutilmente confuso in questo modo. Possiamo dire a Grep di stamparne diversi prima e dopo la partita per risolvere questo problema. Per farlo, useremo il flag “-c."

$ GREP -C 5 "DKMS" APT-PACKAGES INSTALLED-1.TXT

Si noti che l'output sarà simmetrico attorno alla stringa corrispondente se si utilizza il flag "-c". Se vuoi un numero asimmetrico di righe, devi descriverle separatamente usando le flag "-a" e "-b".

Limitante grep produzione

Se stai lavorando con un file di testo di grandi dimensioni che contiene molte istanze del modello di ricerca, allora il grep L'output stamperà un grosso pezzo di output con un sacco di pasticcio. Per esempio,

$ grep "installato" apt-packages-instald-1.TXT

Possiamo dire a Grep di limitare il numero di righe che è autorizzato a produrre in una situazione del genere. Per farlo, useremo il flag “-m."Il comando sembrerà così:

$ grep -m 10 "installato" apt-packages-instald-1.TXT

Qui, grep Stamperò solo i primi 10 dei motivi corrispondenti.

Usando grep con Stdout

Lo stdout è un flusso di file. È una potente caratteristica di conchiglie (come Bash). È un file temporaneo che contiene l'output del comando precedente. Quando viene eseguito il comando successivo, il valore di Stdout è aggiornato. Impara di più riguardo Stdin, Stderr, E Stdout In Bash.

Il comando Grep può anche funzionare Stdout contenuto. Ad esempio, puoi suscitare l'output di un comando per grep Lavorare su.

Nell'esempio seguente, il comando APT restituisce l'elenco di tutti i pacchetti installati nel sistema. Facciamo il tubo dell'uscita grep e cerca il termine "dkms" nell'output. Secondo grepComportamento predefinito, stamperà tutte le righe che contengono la stringa.

$ elenco APT -Installata | grep "dkms"

L'output può avvertire che l'utilizzo di APT negli script non è consigliato poiché APT non offre un'interfaccia CLI stabile. Ulteriori informazioni sul gestore dei pacchetti APT su Ubuntu.

Pensieri finali

Questa è una breve guida su alcuni degli usi più comuni del grep comando. Per padroneggiare grep, Si consiglia di dare un'occhiata a questa mega guida che dimostra 30 esempi Grep.

La pagina di aiuto di grep Stampa una breve pagina di tutte le opzioni disponibili.

$ GREP -Help

La pagina di uomo di grep contiene tutte le opzioni con spiegazioni dettagliate.

$ man grep

Per i principianti, questa guida su grep Il comando in Linux è un eccellente punto di partenza.

Felice calcolo!