Utworzyłem plik tekstowy z 1000 losowo wybranych wielkich i małych liter:

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

Ile razy słowo „kot” pojawia się w tym pliku przy użyciu grep i wc?

Zrobiłem to w ten sposób:

grep -ic cat file1 

Ale liczy wiersze, w których się pojawia, a ja chcę sprawdzić, ile razy pojawia się w tej jednej linii. Masz jakiś pomysł?

Komentarze

  • fyi, tr może używać [: alnum:] zamiast az .. . Chcesz policzyć, ile razy pojawia się w całym pliku, a nie tylko w każdym wierszu lub tylko w jednym wierszu (powiedziałeś " w tym jednym wierszu " na końcu)?

Odpowiedz

Praca, którą muszę zrobić, to sprawdzić, ile razy w tym pliku pojawia się świat „cat” za pomocą polecenia grep i wc.

Spróbuj:

grep -oi cat file1 | wc -l 

Przykład:

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

^ Mamy cztery wystąpienia cat powyżej.

grep -oi cat file1 | wc -l 4 

From man grep (wyróżnienie moje):

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

Komentarze

  • Powyższe polecenie znajdzie wszystkie podciągi cat , nawet jeśli są częścią innych słów, takich jak bob kot i kot alougue. Ale plik jest tworzony tak, że nie zawiera spacji, ani słowa przerywającego, ani podziału wiersza. Dlatego to tylko uwaga.
  • @schweik Tak, to prawda. Nie dodałem żadnych granic słów do mojej odpowiedzi.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *