Mam plik tekstowy zawierający tweety i muszę policzyć, ile razy słowo jest wspomniane w tweecie. Na przykład plik zawiera:
Apple iPhone X is going to worth a fortune
The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors?
Powiedzmy, że chcę policzyć, ile razy w pliku wspomniane jest słowo iPhone. Oto co próbowałem.
cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l
to z pewnością działa, ale jestem zdezorientowany co do polecenia „wc” w unixie. Jaka jest różnica, jeśli spróbuję:
cut -f 1 Tweet_Data | grep -c "iPhone"
gdzie zamiast tego używane jest -c? Oba dają różne wyniki w dużym pliku pełnym tweetów i jestem zdezorientowany, jak to działa. Która metoda jest prawidłowym sposobem liczenia zdarzenia?
text-processing
grep
cut
Maxxx
źródło
źródło
cut -f1
tnie na kartach, co niewiele tu robi. Czy na pewnowc -l
daje to prawidłową liczbę? Pokazuje tutaj 2, ale liczę 3 wystąpienia „iPhone'a”.Odpowiedzi:
Biorąc pod uwagę taki wymóg, użyłbym GNU grep (dla
-o
opcji ), a następnie przekazałem go,wc
aby policzyć całkowitą liczbę wystąpień:Zwykły
grep -c
w danych policzy liczbę pasujących wierszy , a nie całkowitą liczbę pasujących słów . Użycie tej-o
opcji powoduje, że grep wypisuje każde dopasowanie w linii on-line, bez względu na to, ile razy dopasowanie jest w linii.wc -l
nakazujewc
narzędziu policzyć liczbę linii. Po wstawieniu przez grep każdego dopasowania do osobnego wiersza, jest to całkowita liczba wystąpień słowa na wejściu.Jeśli GNU grep nie jest dostępny (lub pożądany), możesz przekształcić dane wejściowe
tr
tak, aby każde słowo znajdowało się w osobnej linii, a następnie użyj,grep -c
aby policzyć:źródło
Najłatwiejszą metodą jest
dla ciebie to będzie,
źródło