Ik heb een tekstbestand gemaakt met 1000 willekeurige hoofdletters en kleine letters:
cat /dev/urandom | tr -dc "a-zA-Z0-9" | head -c 1000 > file1
Hoe vaak komt het woord “kat” in dit bestand voor met grep
en wc
?
Ik deed het op deze manier:
grep -ic cat file1
Maar het telt regels waarin het voorkomt, terwijl ik wil controleren hoeveel keer verschijnt het op die ene regel. Enig idee?
Reacties
- fyi, tr kan [: alnum:] gebruiken in plaats van de az .. . En je wilt tellen hoe vaak het voorkomt in het hele bestand, niet alleen op elke regel, of in slechts één bepaalde regel (je zei " op die ene regel " aan het einde)?
Antwoord
Het werk dat ik moet doen is uitzoeken hoe vaak in dit bestand de wereld “kat” verschijnt met het commando
grep
enwc
.
Probeer:
grep -oi cat file1 | wc -l
Voorbeeld:
$ cat file1 foo cat bar zoo cat random text cat dog foobar cat end!
^ We hebben vier keer cat
hierboven.
grep -oi cat file1 | wc -l 4
Van man grep
(mijn nadruk):
-o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
Reacties
- Het bovenstaande commando zal alle substring kat vinden, zelfs als ze deel uitmaken van een ander woord zoals bob kat en kat alougue. Maar het bestand is zo gemaakt dat het geen spatie bevat, geen woordrem of regeleinde. Daarom is dit slechts een opmerking.
- @schweik Ja, dat is waar. Ik heb geen woordgrenzen aan mijn antwoord toegevoegd.