Jeg har opprettet en tekstfil med 1000 tilfeldige store og små bokstaver:

cat /dev/urandom | tr -dc "a-zA-Z0-9" | head -c 1000 > file1 

Hvor mange ganger vises ordet «cat» i denne filen ved hjelp av grep og wc?

Jeg gjorde det på denne måten:

grep -ic cat file1 

Men det teller linjer der det vises, mens jeg vil sjekke hvor mange ganger vises det i den ene linjen. Har du noen ide?

Kommentarer

  • fyi, tr kan bruke [: alnum:] i stedet for az .. Og du vil telle hvor mange ganger den vises i hele filen, ikke bare på hver linje, eller bare på en bestemt linje (du sa " i den ene linjen " på slutten)?

Svar

Arbeid jeg må gjøre er å finne hvor mange ganger i denne filen, vises som «katt» med kommando grep og wc.

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 av cat over.

grep -oi cat file1 | wc -l 4 

Fra man grep (min vektlegging):

 -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 finner alle understreng cat selv om de er en del av andre ord som bob katt og katt alougue. Men filen er opprettet slik at den ikke inneholder mellomrom, ingen ord bremser ingen linjeskift. Derfor er dette bare et notat.
  • @schweik Ja, det stemmer. Jeg la ikke til noen ordgrenser i svaret mitt.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *