Ho “creato un file di testo con 1000 lettere maiuscole e minuscole casuali:
cat /dev/urandom | tr -dc "a-zA-Z0-9" | head -c 1000 > file1
Quante volte compare la parola “gatto” in questo file, utilizzando grep
e wc
?
Lho fatto in questo modo:
grep -ic cat file1
Ma conta le righe in cui compare, mentre io voglio controllare quante volte appare in quella riga. Qualche idea?
Commenti
- fyi, tr può usare [: alnum:] invece di az .. . E vuoi contare quante volte appare nellintero file, non solo su ogni riga o in una sola riga particolare (hai detto " in quella riga " alla fine)?
Risposta
Il lavoro che devo fare è trovare quante volte in questo file appare world “cat” usando il comando
grep
ewc
.
Prova:
grep -oi cat file1 | wc -l
Esempio:
$ cat file1 foo cat bar zoo cat random text cat dog foobar cat end!
^ Abbiamo quattro occorrenze di cat
sopra.
grep -oi cat file1 | wc -l 4
Da man grep
(enfasi mia):
-o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
Commenti
- Il comando precedente troverà tutte le sottostringhe cat anche se fanno parte di altre parole come bob gatto e gatto alougue. Ma il file viene creato in modo che non contenga spazio, nessuna parola freno né interruzione di riga. Quindi questa è solo una nota.
- @schweik Sì, è vero. Non ho aggiunto confini di parole alla mia risposta.