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 e wc.

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *