Am un fișier text care conține tweets și trebuie să număr numărul de ori în care un cuvânt este menționat în tweet De exemplu, fișierul conține:

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? 

Și să spunem că vreau să număr de câte ori este menționat cuvântul iPhone în fișier. Deci, iată ce am încercat.

cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l 

funcționează cu siguranță, dar sunt confuz cu privire la comanda „wc” din unix. Care este diferența dacă încerc ceva de genul:

cut -f 1 Tweet_Data | grep -c "iPhone" 

unde se folosește -c? Amândouă acestea dau rezultate diferite într-un fișier mare plin de tweet-uri și eu sunt confuz despre cum funcționează. Care metodă este modul corect de numărare a apariției?

Comentarii

Răspuns

Având în vedere o astfel de cerință, aș utilizați un grep GNU (pentru opțiunea -o ), apoi treceți-o prin wc pentru a număra numărul total de apariții:

$ grep -o -i iphone Tweet_Data | wc -l 3 

Câmpie grep -c pe date se va număra numărul de linii care se potrivesc, nu numărul total de cuvinte care se potrivesc. Utilizarea opțiunii -o îi spune grep să afișeze fiecare potrivire pe propria linie, indiferent de câte ori a fost găsită potrivirea în linia inițială.

wc -l îi spune utilitarului wc să numere numărul de linii. După ce grep pune fiecare potrivire în propria linie, acesta este numărul total de apariții ale cuvântului din intrare.


Dacă grep-ul GNU nu este disponibil (sau dorit), puteți transforma introduceți cu tr astfel încât fiecare cuvânt să fie pe propria linie, apoi utilizați grep -c pentru a număra:

$ tr "[:space:]" "[\n*]" < Tweet_Data | grep -i -c iphone 3 

Răspuns

Cea mai ușoară metodă este,

grep -wc "your_text" FileName 

pentru tine va fi,

grep -wc "iPhone" Tweet_Data 

Comentarii

  • Răspuns foarte curat, totuși, dacă se potrivesc cu un cuvânt ca ' cool ' veți potrivi doar cool și NU cocooll, deci rețineți că spațiile din jurul cuvântului contează.
  • Rezultatul va fi incorect atunci când cuvântul apare de mai multe ori într-o linie.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *