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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *