Spesso preferisco utilizzare i comandi nella bash piuttosto che software grafici. Il motivo è legato all’immediatezza di utilizzo della bash: un comando al posto giusto ed il risultato è servito senza troppi fronzoli.
Per cercare all’interno di files, il comando più utilizzato è sicuramente grep. Ad esempio, per cercare la stringa “pippo” all’interno di tutti i files nella directory corrente, basta utilizzare:
1 |
grep pippo * |
se invece voglio cercare anche nelle sottodirectory, allora:
1 |
grep -R pippo * |
L’uso del semplice grep è molto intuitivo, ma si può fare di più.
Ad esempio, per cercare la parola “pippo” (non più semplicemente la stringa “pippo” che potrebbe essere compresa in altre parole), si può usare:
1 |
grep -w pippo * |
e per avviare la ricerca senza distinzioni tra maiuscole e minuscole:
1 |
grep -i pippo * |
Veniamo ora a qualcosa di più articolato. Voglio cercare “pippo si” oppure “pippo-si” in tutti i file .txt della directory corrente:
1 |
grep pippo[- ] *.txt |
Chi di voi utilizza la bash ed il comando grep, avrà sicuramente usato le varie combinazioni che ho descritto, allora aggiungiamo ancora qualcosa che in alcuni casi può risultare davvero utile: le Espressioni Regolari o Regular Expression nelle ricerche con grep.
Innanzittuto una lista con la spiegazione breve dei carattery jolly da poter usare:
1 2 3 4 5 6 7 8 9 10 11 |
^ = cerca le espressioni in zui la riga inizia per il successivo carattere, es ^A. $ = cerca le espressioni in cui la riga finisce per il precedente carattere, es A$. \ = evita che il carattere successivo venga interpretato come speciale, es \^. [ ] = cerca uno dei caratteri presenti tra parentesi, es [aeiou]. Usare il trattino "-" per un intervallo, es [0-9]. [^ ] = cerca un qualsiasi carattere tranne quelli nelle parentesi [ ], es [^0-9]. . = cerca un qualsiasi singolo carattere, tranne il fine riga. * = cerca zero o più caratteri che lo precedono, es A*. \{x,y\} = cerca da x a y occorrenze dei caratteri che precedono. \{x\} = cerca esattamente x occorrenze che precedono. \{x,\} = cerca x o più occorrenze che precedono. |
Ora vediamo qualche esempio commentato (il commento è tra le parentesi graffe {}):
1 2 3 4 5 6 7 8 9 |
grep smug * {cerca la stringa 'smug'} grep '^smug' * {cerca la stringa 'smug' ad inizio riga} grep 'smug$' * {cerca la stringa 'smug' a fine riga} grep '^smug$' * {cerca se la riga contiene solo la stringa 'smug'} grep '\^s' * {cerca la stringa '^s', "\" è un escape per ^} grep '[Ss]mug' * {cerca la stringa 'Smug' oppure 'smug'} grep 'B[oO][bB]' * {cerca le stringhe BOB, Bob, BOb o BoB } grep '^$' * {cerca le righe vuote} grep '[0-9][0-9]' * {cerca una coppia di numeri, es 00 o 10, 59} |
e poi ancora:
1 2 3 4 5 6 7 8 9 |
grep '^From: ' /usr/mail/$USER {elenco delle email} grep '[a-zA-Z]' {qualsiasi linea con almeno una lettera} grep '[^a-zA-Z0-9] {qualsiasi linea che non contenga lettere o numeri} grep '[0-9]\{3\}-[0-9]\{6\}' {999-999999, una stringa tipo numero di telefono} grep '^.$' {line con esattamente un carattere} grep '"smug"' {la stringa 'smug' senza virgolette} grep '"*smug"*' {la stringa 'smug', con o senza virgolette} grep '^\.' {qualsiasi riga che inizia con il punto "."} grep '^\.[a-z][a-z]' {riga che inizia per punto "." e due lettere} |
enjoy!
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta