Am creat un fișier text cu 1000 de litere aleatorii majuscule și minuscule:
cat /dev/urandom | tr -dc "a-zA-Z0-9" | head -c 1000 > file1
De câte ori apare cuvântul „pisică” în acest fișier, folosind grep
și wc
?
Am făcut-o astfel:
grep -ic cat file1
Dar contează liniile în care apare, în timp ce vreau să verific câte de câte ori apare în acea linie. Ai vreo idee?
Comentarii
- fyi, tr poate folosi [: alnum:] în loc de az .. . Și doriți să numărați de câte ori apare în întregul fișier, nu doar pe linia fiecare sau într-o singură linie anume (ați spus " în acea linie " la sfârșit)?
Răspuns
Lucrul pe care trebuie să-l fac este să găsesc de câte ori în acest fișier apare lumea „pisică” folosind comanda
grep
șiwc
.
Încercați:
grep -oi cat file1 | wc -l
Exemplu:
$ cat file1 foo cat bar zoo cat random text cat dog foobar cat end!
^ Avem patru apariții ale cat
mai sus.
grep -oi cat file1 | wc -l 4
Din man grep
(accentul meu):
-o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
Comentarii
- Comanda de mai sus va găsi toate sub șirurile cat , chiar dacă fac parte altor cuvinte precum bob pis și pis alougue. Dar fișierul este creat astfel încât să nu conțină spațiu, nici frână de cuvânt, nici întrerupere de linie. Prin urmare, aceasta este doar o notă.
- @schweik Da, este adevărat. Nu am adăugat limite de cuvinte la răspunsul meu.