In questo tutorial impareremo a conoscere "grep" comando. Grep sta per G lobale r egular e xpressione p strappare. Come suggerisce il nome, Grep viene utilizzato per cercare file di testo con espressioni regolari (a breve regex ). Stampa le linee che corrispondono al modello dato in un file di testo. Se non viene fornito alcun file, grep cercherà ricorsivamente il modello specificato nei file nella directory corrente. Grep ha due varianti, vale a dire egrep e fgrep . Queste varianti sono deprecate ma sono fornite per la compatibilità con le versioni precedenti. Invece di usare "grep -E" e "grep -F", puoi usare rispettivamente "egrp" e "fgrep". Senza ulteriori indugi, iniziamo.
Esempi di comandi Grep
Ho un file chiamato file.txt con alcune parole a caso. Diamo un'occhiata a file.txt:
$ cat file.txt ostechnix Ostechnix o$technix linux linus unix technology hello world HELLO world
Per iniziare la ricerca, digita grep seguito da cosa stai cercando e da dove stai cercando. Ad esempio, cercherò la stringa "nix" nel file.txt. Per farlo, eseguo:
$ grep nix file.txt
Esempio di output:
ostechnix Ostechnix o$technix unix
Come puoi vedere nell'output sopra, abbiamo due parole che contengono il modello di corrispondenza "nix". Se la stringa di ricerca contiene due parole, menzionale tra virgolette singole come di seguito.
$ grep 'hello world' file.txt hello world
Puoi anche usare -n flag per mostrare i numeri di riga nell'output:
$ grep -n nix file.txt
Esempio di output:
1:ostechnix 2:Ostechnix 3:o$technix 6:unix
Questo può essere utile quando lavori con un codice molto lungo.
Tieni presente che grep fa distinzione tra maiuscole e minuscole . Ad esempio, quando cerchi "os" , non visualizzerà le righe che contengono lettere maiuscole, ad esempio Os.
Controlla il seguente esempio.
$ grep os file.txt ostechnix
Ma ho un'altra parola chiamata "Ostechnix" in file.txt, ma grep non l'ha elencata.
Se vuoi, tuttavia, ignorare la distinzione tra maiuscole e minuscole, puoi utilizzare "-i" segnala come sotto.
$ grep -i os file.txt ostechnix Ostechn1x
$ grep -i 'hello world' file.txt hello world HELLO world
Ora, a grep non importava del caso e nel risultato abbiamo ottenuto le parole che contengono lettere maiuscole e minuscole.
Possiamo anche reindirizzare un output di un comando in grep. Dai un'occhiata al seguente esempio.
$ cat file.txt | grep os ostechnix
Ora guarda cosa abbiamo. L'output del file.txt viene reindirizzato a grep e sono state visualizzate le parole che contengono le lettere "os" in file.txt.
Possiamo anche usare alcuni caratteri speciali o espressioni regolari in grep.
- ^ - cerca all'inizio della riga.
- $ - cerca alla fine della riga.
- . - Cerca qualsiasi carattere.
Lascia che ti mostri un esempio, così puoi capire dove e come utilizzare quei caratteri speciali.
Sai già, possiamo cercare le parole che contengono la stringa "tech" come di seguito.
$ grep tech file.txt ostechnix Ostechnix o$technix technology
E se volessi solo cercare le righe che iniziano solo con la parola "tecnologia". Non vuoi visualizzare tutte le parole che contengono la stringa, ma solo le parole che hanno la stringa "tech" all'inizio. È anche possibile. È qui che tornano utili i caratteri speciali.
Per cercare le parole che corrispondono al modello "tech" all'inizio della riga in un file, eseguire:
$ grep ^tech file.txt technology
Allo stesso modo, possiamo cercare le parole che terminano con una o più lettere particolari, ad esempio "x" , come di seguito.
$ grep x$ file.txt ostechnix Ostechnix o$technix linux unix
Inoltre, puoi trovare le parole che contengono qualsiasi carattere utilizzando . (punto).
Ad esempio, cerchiamo qualsiasi parola che abbia "n" nel file.
$ grep .n file.txt ostechnix Ostechnix o$technix linux linus unix technology
Ora dovresti avere una conoscenza di base dell'utilizzo di grep. Andiamo avanti e impariamo le altre due varianti, ovvero egrep e fgrep .
Esempi di comandi Egrep
egrep sta per e grep esteso . È simile a "grep -E" comando. Farà tutte le cose che farà grep. Tuttavia, fornisce alcune funzionalità aggiuntive, come l'uso di espressioni regolari complicate, rispetto al normale comando grep pronto all'uso.
Ad esempio, possiamo cercare qualsiasi parola che inizi con "l" o "o" .
Ricorda che usiamo il simbolo del cursore (^) per cercare le parole all'inizio della riga. Quindi, il nostro comando per la query precedente sarà:
$ egrep '^(l|o)' file.txt ostechnix o$technix linux linus
Vedere? Abbiamo tutte le parole che iniziano con "l" o "o". Tieni presente che il normale comando grep non può farlo.
Allo stesso modo, possiamo cercare le righe che iniziano con qualsiasi intervallo di caratteri compreso tra "l" e "u". Ciò significa che otterremo le linee che iniziano con l, m, n, o, p, q, r, s, t e u. Tutto il resto verrà omesso dal risultato.
$ egrep '^[l-u]' file.txt ostechnix o$technix linux linus unix technology
Tieni presente che ho utilizzato parentesi quadra ([) per cercare l'intervallo di parole. Poiché grep distingue tra maiuscole e minuscole, non troverà righe che iniziano con lettere maiuscole nell'intervallo specificato.
Per visualizzare tutte le righe che iniziano con lettere maiuscole e minuscole, utilizziamo:
$ egrep '^[l-u]|[L-U]' file.txt
Oppure,
$ egrep '^([l-u]|[L-U])' file.txt
Esempio di output:
ostechnix Ostechnix o$technix linux linus unix technology HELLO world
Vedere? Ora abbiamo le parole che iniziano con l'intervallo di caratteri da "l" a "u" (maiuscolo o minuscolo).
Esempi di comandi Fgrep
fgrep sta per f ast grep . È simile a "grep -F" . fgrep non è in grado di riconoscere espressioni regolari o caratteri speciali. fgrep può essere utilizzato dove vuoi che vengano valutate le espressioni regolari.
Ad esempio, utilizziamo il seguente comando per trovare le parole che terminano con "x" .
$ grep x$ file.txt ostechnix Ostechnix o$technix linux unix
Ora esegui lo stesso comando con fgrep.
$ fgrep x$ file.txt
Non visualizzerà nulla, perché non è stato possibile valutare i caratteri speciali.
Vediamo ora un altro esempio. Per cercare le parole che corrispondono alla stringa "o$" con il comando grep, facciamo:
$ grep o$ file.txt
Ma non otteniamo nulla, perché? Perché, come per il comando precedente, utilizziamo il simbolo del dollaro($) per trovare le parole che terminano con "o". Poiché non c'erano caratteri termina con "o" in file.txt, non otteniamo nulla.
Ora esegui lo stesso comando con fgrep.
$ fgrep o$ file.txt o$technix
Vedere? Qui è dove usiamo il comando fgrep. Ignora semplicemente il simbolo del dollaro (il carattere speciale, ovviamente) e visualizza la parola che contiene la stringa "o$".
Per maggiori dettagli su grep, digita:
$ grep --help
Darà tutte le opzioni possibili. Oppure, fai riferimento alle pagine man.
$ man grep
Lettura consigliata:
- Impara a utilizzare le pagine man in modo efficiente
Etimologia di grep
Grep è stato scritto durante la notte da Ken Thompson , lo stesso ragazzo che ha scritto Unix. Ma perché e come ha preso il nome? Professore Brian Kernighan spiega l'etimologia di grep in questo video.
E questo è tutto. Grep è uno dei comandi importanti che dovresti imparare a fondo.
Ora sai cos'è grep e come usarlo per cercare file di testo con schemi corrispondenti in GNU/Linux. Inoltre hai imparato come Grep ha preso il nome. Spero che questo sia stato utile.