Jag har skapat en textfil med 1000 slumpmässiga versaler och små bokstäver:

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

Hur många gånger visas ordet ”cat” i den här filen med grep och wc?

Jag gjorde det på det här sättet:

grep -ic cat file1 

Men det räknar rader där det visas, medan jag vill kontrollera hur många gånger visas det på den ena raden. Någon idé?

Kommentarer

  • fyi, tr kan använda [: alnum:] istället för az .. Och du vill räkna hur många gånger det visas i hela filen, inte bara på varje rad, eller bara på en viss rad (du sa " i den ena raden " i slutet)?

Svar

Arbetet jag måste göra är att hitta hur många gånger i den här filen, visas som ”katt” med kommandot grep och wc.

Försök:

grep -oi cat file1 | wc -l 

Exempel:

$ cat file1 foo cat bar zoo cat random text cat dog foobar cat end! 

^ Vi har fyra förekomster av cat ovan.

grep -oi cat file1 | wc -l 4 

Från man grep (min betoning):

 -o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. 

Kommentarer

  • Kommandot ovan hittar alla understrängar cat även om de är en del med andra ord som bob katt och katt alougue. Men filen skapas så att den inte innehåller något utrymme, inget ord bromsar ingen radbrytning. Därför är detta bara en anteckning.
  • @schweik Ja, det stämmer. Jag lade inte till några ordgränser i mitt svar.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *