GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Grep in Linux/UNIX

In Linux e Unix Systems Grep, abbreviazione di "stampa di espressioni regolari globali", è un comando utilizzato per cercare e abbinare i file di testo contenuti nelle espressioni regolari. Inoltre, il comando viene preinstallato in ogni distribuzione Linux. In questa guida, esamineremo l'utilizzo del comando grep comune con alcuni esempi.

Comando Grep in Linux

Il comando Grep può essere utilizzato per trovare o cercare un'espressione regolare o una stringa in un file di testo. Per dimostrarlo, creiamo un file di testo welcome.txt e aggiungi alcuni contenuti come mostrato.


Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.

Grande! Ora siamo pronti per eseguire alcuni comandi grep e manipolare l'output per ottenere i risultati desiderati.

Per cercare una stringa in un file, esegui il comando seguente

Sintassi

$ grep "string" file name

O

$ filename grep "string"

Esempio :

$ grep "Linux" welcome.txt

Risultato

Come puoi vedere, grep non solo ha cercato e abbinato la stringa "Linux", ma ha anche stampato le righe in cui appare la stringa.

Se il file si trova in un percorso file diverso, assicurati di specificare il percorso del file come mostrato di seguito

$ grep "string" /path/to/file

Colorazione dei risultati Grep utilizzando l'opzione –color

Se stai lavorando su un sistema che non mostra la stringa o il modello di ricerca in un colore diverso dal resto del testo, usa il --color per far risaltare i tuoi risultati.

Esempio

$ grep --color "free and opensource" welcome.txt 

Risultato

Ricerca ricorsiva di una stringa in tutte le directory

Se desideri cercare una stringa nella directory corrente e in tutte le altre sottodirectory, esegui la ricerca utilizzando il - r contrassegna come mostrato

$ grep -r "string-name" *

Ad esempio

$ grep -r "linux" *

Risultato

Ignora la distinzione tra maiuscole e minuscole

Nell'esempio sopra, i nostri risultati di ricerca ci hanno dato ciò che volevamo perché la stringa "Linux" è stata specificata in maiuscolo ed esiste anche nel file in maiuscolo. Ora proviamo a cercare la stringa in minuscolo.

$ grep "linux" file name

Niente dall'output, giusto? Questo perché grepping non è stato in grado di trovare e abbinare la stringa "linux" poiché la prima lettera è minuscola. Per ignorare la distinzione tra maiuscole e minuscole, usa -i contrassegnare ed eseguire il comando seguente

$ grep -i "linux" welcome.txt

Risultato

Fantastico no? Il - i viene normalmente utilizzato per visualizzare le stringhe indipendentemente dalla distinzione tra maiuscole e minuscole.

Conta le righe in cui le stringhe sono abbinate con l'opzione -c

Per contare il numero totale di righe in cui appare o risiede lo schema di stringa, esegui il comando seguente

$ grep -c "Linux" welcome.txt

Risultato

Utilizzo di Grep per invertire l'output

Per invertire l'output di Grep , usa -v bandiera. Il -v opzione indica a grep di stampare tutte le righe che non contengono o corrispondono all'espressione.

L'opzione –v dice a grep di invertire il suo output, il che significa che invece di stampare le righe corrispondenti, fai il contrario e stampa tutte le righe che non corrispondono all'espressione. Tornando al nostro file, mostriamo i numeri di riga come mostrato.

Premi ESC sull'editor Vim, digita i due punti completi seguiti da

 set nu

Quindi, premi Invio

Risultato

Ora, per visualizzare le righe che non contengono la stringa "Linux" esegui

$ grep -v "Linux" welcome.txt

Risultato

Come puoi vedere, grep ha visualizzato le righe che non contengono il modello di ricerca.

Numera le righe che contengono il modello di ricerca con l'opzione -n

Per numerare le righe in cui lo schema di stringa è abbinato, usa il -n opzione come mostrato

$ grep -n "Linux" welcome.txt

Risultato

Cerca la parola con corrispondenza esatta usando l'opzione -w

Passando quindi -w flag cercherà la riga contenente la parola esatta corrispondente come mostrato

$ grep -w "opensource" welcome.txt

Risultato

Tuttavia, se ci provi

$ grep -w "open" welcome.txt

NESSUN risultato verrà restituito perché non stiamo cercando uno schema ma una parola esatta!

Uso di pipe con grep

Il comando grep può essere utilizzato insieme alle pipe per ottenere un output distinto.

Ad esempio, se vuoi sapere se un determinato pacchetto è installato nel sistema Ubuntu esegui

$ dpkg -L | grep "package-name"

Ad esempio, per scoprire se OpenSSH è stato installato nella tua pipe di sistema, dpkg -l comando per grep come mostrato

$ dpkg -L | grep -i "openssh"

Risultato

Visualizzazione del numero di righe prima o dopo un modello di ricerca Usando le pipe

Puoi usare la -A o -B per visualizzare il numero di righe che precedono o seguono la stringa di ricerca. La -A flag indica le righe che seguono la stringa di ricerca e -B stampa l'output che appare prima della stringa di ricerca.

Ad esempio

$ ifconfig | grep -A 4 ens3

Questo comando visualizza la riga contenente la stringa più 4 righe di testo dopo ens stringa in ifconfig comando.

Risultato

Al contrario, nell'esempio seguente, l'uso del flag -B mostrerà la riga contenente la stringa di ricerca più 3 righe di testo prima dell'etere stringa in ifconfig comando.

Risultato

$ ifconfig | grep -B 4 ether

Utilizzo di grep con espressioni regolari (REGEX)

Il termine REGEX è l'acronimo di REG ul EX pressione. Un REGEX è una sequenza di caratteri che viene utilizzata per abbinare un modello. Di seguito sono riportati alcuni esempi:


^      Matches characters at the beginning of a line
$      Matches characters at the end of a line
"."    Matches any character
[a-z]  Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets

Esempio
Per stampare righe che iniziano con un determinato carattere, la sintassi è;

grep ^character file_name

Ad esempio, per visualizzare le righe che iniziano con la lettera "d" nel nostro file welcome.txt, eseguiremo

$ grep ^d welcome.txt 

Risultato

Per visualizzare le righe che terminano con la lettera "x" corri

$ grep x$ welcome.txt

Risultato

Ricevere aiuto con più opzioni Grep

Se hai bisogno di ulteriori informazioni sull'utilizzo del comando Grep, esegui il comando seguente per avere un'anteprima di altri flag o opzioni che potresti utilizzare insieme al comando.

$ grep --help

Risultato campione

Apprezziamo il tuo tempo per passare attraverso questo tutorial. Sentiti libero di provare i comandi e facci sapere come è andata.


Linux
  1. comando Linux grep

  2. Comando Linux mv

  3. Linux du comando

  4. comando IP Linux

  5. comando cd di Linux

Linux vs Unix

comando ls in Linux/UNIX

comando cp in Linux/UNIX

Trova comando in Linux/UNIX

Uso del comando grep in Linux

15 Esempi pratici di comandi Grep in Linux / UNIX