Un corso pratico al comando grep, lo strumento più antico e ancora insostituibile per cercare testo dentro file e flussi. Dieci lezioni, ognuna con un blocco di teoria, uno di pratica e un trucco che da solo vale il tempo speso.
grep
Storia breve, filosofia Unix, differenze tra BSD (macOS) e GNU (Linux), come riconoscere quale versione si sta usando.
La sintassi vera, gli exit code, e le otto opzioni che userai tutti i giorni: -i, -n, -c, -v, -l, -w, -x, -q.
-i
-n
-c
-v
-l
-w
-x
-q
I metacaratteri fondamentali (., *, ^, $, []) e perché le virgolette singole non sono mai un dettaglio.
.
*
^
$
[]
-E
Quantificatori (+, ?, {n,m}), alternanza con |, gruppi (…): il salto di qualità nella scrittura dei pattern.
+
?
{n,m}
|
(…)
-r, --include, --exclude-dir: usare grep come motore di ricerca dentro un repository di codice.
-r
--include
--exclude-dir
Le opzioni -A, -B, -C: indispensabili per leggere log, configurazioni e tracciare il punto in cui qualcosa è andato storto.
-A
-B
-C
Stampare solo la parte che matcha (-o), conteggi, separatori NUL, e il rapporto tra grep e i suoi vicini di pipe (cut, awk, sort).
-o
cut
awk
sort
grep -P
Lookahead, lookbehind, non-greedy, classi abbreviate (\d, \w): regex avanzate e perché su macOS serve ggrep.
\d
\w
ggrep
Grep come filtro in catene Unix: ps | grep, tail -f | grep, git log | grep, e l'uso di pattern list con -f.
ps | grep
tail -f | grep
git log | grep
-f
Velocizzare con LC_ALL=C, gestire file binari, e capire quando vale la pena di passare a ripgrep, ag o ack.
LC_ALL=C
ripgrep
ag
ack