In questo articolo, ti mostriamo di eseguire la ricerca di stringhe anticipate utilizzando Grep con espressione regolare dandoti 10 esempi pratici sulle sue implementazioni. Molti esempi discussi in questo articolo hanno implicazioni pratiche, il che significa che puoi usarli nella programmazione quotidiana di Linux. I seguenti campioni descrivono alcuni esempi di regexp per i modelli comunemente cercati.
Ex 1: trova un singolo charterer in un file di testo
Per output le righe nel file "libro" che contengono un carattere '$', digita:
libro $ grep '\ $'
Ex 2: trova una singola stringa in un file di testo
Per output le righe nel file "libro" che contiene la stringa $ 14.99 ', tipo:
$ grep '\ $ 14 \.Libro 99 '
Ex 3: trova un singolo charterer speciale in un file di testo
Per output le righe nel file "libro" che contengono un carattere '\', digita:
$ grep '\\' libro
Ex 4: righe corrispondenti che iniziano con un certo testo
Usa 'ˆ' in un regexp per indicare l'inizio di una linea.
Per produrre tutte le righe in '/usr/dict/parole' a partire da 'pro', tipo:
$ grep 'ˆpro'/usr/dict/words
Per eliminare tutte le righe nel file "libro" che inizia con il testo "all'inizio", indipendentemente dal caso, digita:
$ grep -i 'ˆin the inizio "
NOTA: Questi regexps sono stati citati con 'personaggi; Questo perché alcune conchiglie altrimenti trattano il carattere "ˆ" come uno speciale "metacharacter"
Oltre alle ricerche di parole e frase, puoi usare Grep per cercare schemi di testo complessi chiamati espressioni regolari. Un'espressione regolare o "regexp"-è una stringa di testo di caratteri speciali che specifica a impostato di motivi da abbinare.
Tecnicamente parlando, la parola o la frase schemi sono espressioni regolari, proprio molto semplici. In un'espressione regolare, la maggior parte dei personaggi, inclusi le lettere e i numeri che si rappresentano. Ad esempio, il modello regexp 1 corrisponde alla stringa '1' e il modello ragazzo corrisponde al "ragazzo".
Ci sono un certo numero di caratteri riservati chiamati metacharacter che non si rappresentano in un'espressione regolare, ma hanno un significato speciale che viene usato per costruire modelli complessi. Questi metacharacter sono i seguenti: ., *, [, ", ˆ, $ e \. È bene notare che tali metacharacter sono comuni tra quasi tutte le distribuzioni Linux comuni e speciali. Ecco un buon articolo che copre i significati speciali dei metacharacter e fornisce esempi del loro utilizzo.
Ex 5: linee corrispondenti che terminano con un certo testo
Usa '$' come ultimo carattere del testo citato per abbinare quel testo solo alla fine di una riga. Per output le righe nel file "andando" che termina con un punto esclamativo, digitare:
$ grep '!$ 'andando
Ex 6: linee corrispondenti di una certa lunghezza
Per abbinare le linee di una lunghezza particolare, usa quel numero di ".'caratteri tra' ˆ 'e' $ '- per esempio, per abbinare tutte le righe che sono larghe due caratteri (o colonne), usa' ˆ… $ 'come regexp per cercare.
Per produrre tutte le righe in '/usr/dict/words' che sono esattamente larghe tre caratteri, tipo:
$ grep 'ˆ… $'/usr/dict/words
Per linee più lunghe, è più utile usare un costrutto diverso: 'ˆ.\ numero \ $ ', dove il numero è il numero di righe da abbinare. Usa ',' per specificare un intervallo di numeri.
Per produrre tutte le righe in '/usr/dict/words' che sono esattamente dodici caratteri larghi, tipo:
$ grep 'ˆ.\ 12 \ $ '/usr/dict/words
Per produrre tutte le righe in '/usr/dict/words' che sono larghe ventidue o più caratteri, digita:
$ grep 'ˆ.\ 22, \ $ '/usr/dict/Words
Ex 7: linee corrispondenti che contengono uno qualsiasi di alcuni regexps
Per abbinare le righe che contengono una qualsiasi di un numero di regexps, specificare ciascuno dei regexps per cercare tra gli operatori di alternanza ('\ |') come regexp per cercare. Le linee contenenti qualsiasi regexps fornite verranno emette.
Per produrre tutte le righe in "Playboy" che contiene i motivi "il libro" o "Cake", tipo:
$ grep 'the book \ | cake' Playboy
Ex 8: linee corrispondenti che contengono tutti alcuni regexps
Alle linee di output che corrispondono Tutto di un numero di regexps, usa grep per output linee contenenti il primo regexp che si desidera abbinare e tubi l'uscita su un grep con il secondo regexp come argomento. Continua ad aggiungere tubi alle ricerche grep per tutti i regexps che si desidera cercare.
Per produrre tutte le linee in "Playlist" che contiene entrambi i motivi "The Shore" e "Sky", indipendentemente dal caso, tipo:
$ grep -i 'The Shore' Playlist | grep -i cielo
Ex 9: linee corrispondenti che contengono solo determinati caratteri
Per abbinare le righe che contengono solo determinati caratteri, usa il regexp 'ˆ [caratteri]*$', in cui i caratteri sono quelli da abbinare. Per output le linee in '/usr/dict/words' che contengono solo vocali, digita:
$ grep -i 'ˆ [aeiou]*$'/usr/dict/words
L'opzione '-I' corrisponde ai caratteri indipendentemente dal caso; Quindi, in questo esempio, tutti i personaggi vocali sono abbinati indipendentemente dal caso.
Ex 10: Trovare frasi indipendentemente dalla spaziatura
Un modo per cercare una frase che potrebbe verificarsi con spazi extra tra le parole, o attraverso una linea o una pausa di pagina, è rimuovere tutti gli alti di linea e gli spazi extra dall'ingresso, e quindi Grep. Per fare ciò, tubi l'input su TR con "\ r \ n: \> \ |-" come argomento all'opzione '-d' (rimuovendo tutte le interruzioni della linea dall'ingresso); pipiscilo al filtro FMT con l'opzione '-u' (che uscirà il testo con spaziatura uniforme); e tuffalo per grep con il modello da cercare.
Per cercare tra le interruzioni di linea per la stringa "contemporaneamente a" nei "documenti", digita:
$ cat docs | tr -d '\ r \ n: \> \ |
-'| fmt -u | grep "allo stesso tempo"
In questo articolo, abbiamo esaminato 10 esempi pratici dell'uso del comando Grep Linux per la ricerca e la ricerca di stringhe in un file di testo. Lungo la strada, abbiamo imparato a usare espressioni regolari insieme a Grep per condurre ricerche complesse su file di testo. Ormai hai un'idea migliore su quanto siano potenti le funzioni di ricerca Linux.
Ecco risorse aggiuntive per coloro che sono interessati a saperne di più sulla programmazione Linux:
Revisione completa di come funzionano il file Linux e il sistema di directory