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