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!