Mám textový soubor obsahující tweety a musím počítat, kolikrát je slovo uvedeno v tweetu Například soubor obsahuje:

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? 

A řekněme, že chci spočítat, kolikrát je v souboru uvedeno slovo iPhone. Takže tady je to, co jsem vyzkoušel.

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

to určitě funguje, ale jsem zmatený ohledně příkazu „wc“ v unixu. Jaký je rozdíl pokud zkusím něco jako:

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

kde se místo toho použije -c? Oba přinášejí různé výsledky ve velkém souboru plném tweetů a jsem zmatený jak to funguje. Která metoda je správný způsob počítání výskytu?

Komentáře

Odpověď

Vzhledem k takovému požadavku bych použijte GNU grep (pro -o možnost ), poté jej projděte wc k výpočtu celkového počtu výskytů:

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

Prostý grep -c v datech se bude počítat počet řádků , které odpovídají, nikoli celkový počet slov , která se shodují. Použitím možnosti -o řeknete grepu, aby vyprodukoval každou shodu na svém vlastním řádku, bez ohledu na to, kolikrát byla shoda nalezena v původním řádku.

wc -l říká nástroji wc, aby spočítal počet řádků. Poté, co grep umístí každou shodu do vlastního řádku, jedná se o celkový počet výskytů slova na vstupu.


Pokud GNU grep není k dispozici (nebo požadovaný), můžete transformovat zadejte pomocí tr tak, aby každé slovo bylo na vlastním řádku, a poté pomocí grep -c spočítat:

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

Odpověď

Nejjednodušší metoda je,

grep -wc "your_text" FileName 

pro vás to bude,

grep -wc "iPhone" Tweet_Data 

komentáře

  • velmi čistá odpověď, ale pokud se shodují se slovem jako ' cool ', budete odpovídat pouze cool a NE ccooll, takže mějte na paměti, že mezery kolem slova jsou důležité.
  • Výsledek bude nesprávný, pokud se slovo vyskytne vícekrát v řádku.

Napsat komentář

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