Jeg har oprettet en tekstfil med 1000 tilfældige store og små bogstaver:
cat /dev/urandom | tr -dc "a-zA-Z0-9" | head -c 1000 > file1
Hvor mange gange vises ordet “cat” i denne fil ved hjælp af grep
og wc
?
Jeg gjorde det på denne måde:
grep -ic cat file1
Men det tæller linjer, hvor det vises, mens jeg vil kontrollere, hvor mange gange vises det i den ene linje. Enhver idé?
Kommentarer
- fyi, tr kan bruge [: alnum:] i stedet for az .. Og du vil tælle, hvor mange gange det vises i hele filen, ikke kun på hver linje eller i bare en bestemt linje (du sagde " i den ene linje " i slutningen)?
Svar
Arbejde, jeg skal gøre, er at finde ud af, hvor mange gange i denne fil, vises som “kat” ved hjælp af kommando
grep
ogwc
.
Prøv:
grep -oi cat file1 | wc -l
Eksempel:
$ cat file1 foo cat bar zoo cat random text cat dog foobar cat end!
^ Vi har fire forekomster af cat
ovenfor.
grep -oi cat file1 | wc -l 4
Fra man grep
(min fremhævelse):
-o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
Kommentarer
- Kommandoen ovenfor finder alle understreng cat selvom de er en del af andre ord som bob kat og kat alougue. Men filen oprettes, så den ikke indeholder mellemrum, intet ord bremser ingen linjeskift. Derfor er dette kun en note.
- @schweik Ja, det er sandt. Jeg tilføjede ingen ordgrænser til mit svar.