Vytvořil jsem textový soubor s 1000 náhodnými velkými a malými písmeny:

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

Kolikrát se v tomto souboru objeví slovo „kočka“ pomocí grep a wc?

Udělal jsem to takto:

grep -ic cat file1 

Ale počítá to řádky, ve kterých se objeví, zatímco chci zkontrolovat, kolik krát se objeví v tomto jednom řádku. Máte nějaký nápad?

Komentáře

  • fyi, tr může místo az .. použít [: alnum:]. . A chcete spočítat, kolikrát se objeví v celém souboru, nejen na řádku každý , nebo pouze v jednom konkrétním řádku (řekli jste " v jednom řádku " na konci)?

odpověď

Práce, kterou musím udělat, je zjistit, kolikrát se v tomto souboru objeví světová „kočka“ pomocí příkazu grep a wc.

Zkuste:

grep -oi cat file1 | wc -l 

Příklad:

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

^ Máme čtyři výskyty cat výše.

grep -oi cat file1 | wc -l 4 

Z man grep (můj důraz):

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

Komentáře

  • Výše uvedený příkaz najde všechny podřetězce cat , i když jsou součástí jiných slov jako bob kočka a kočka alougue. Soubor je ale vytvořen tak, aby neobsahoval mezeru, ani slovo nebrzdilo, ani konec řádku. Proto je to jen poznámka.
  • @schweik Ano, to je pravda. K odpovědi jsem nepřidal žádné hranice slov.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *