Minulla on twiittejä sisältävä tekstitiedosto ja minun on laskettava, kuinka monta kertaa sana mainitaan tweetissä Esimerkiksi tiedosto sisältää:

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? 

Ja sanotaan, että haluan laskea, kuinka monta kertaa sana iPhone mainitaan tiedostossa. Joten tässä olen kokeillut.

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

se varmasti toimii, mutta olen hämmentynyt ”wc” -komennosta unix-tiedostossa. Mikä on ero jos yritän jotain:

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

missä sen sijaan käytetään -c: tä? Molemmat tuottavat erilaisia tuloksia suuressa tiedostossa, joka on täynnä twiittejä, ja olen hämmentynyt miten se toimii. Mikä menetelmä on oikea tapa laskea esiintyminen?

Kommentit

vastaus

Koska tällainen vaatimus olisi, käytä GNU-grepiä ( -o -vaihtoehtoon ), sitten välitä se wc tapahtumien kokonaismäärän laskemiseksi:

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

Tavallinen grep -c datassa laskee vastaavien rivien lukumäärän, ei vastaavien sanojen kokonaismäärää. -o -vaihtoehdon käyttäminen käskee grep: n tuottamaan jokaisen ottelun omalla rivillään riippumatta siitä, kuinka monta kertaa osuma löydettiin alkuperäiseltä riviltä.

wc -l käskee wc -apuohjelman laskemaan rivien määrän. Kun grep on asettanut jokaisen ottelun omalle rivilleen, tämä on syötteen sanan esiintymien kokonaismäärä.


Jos GNU grep ei ole käytettävissä (tai haluttu), voit muuttaa kirjoita tr -kentällä niin, että jokainen sana on omalla rivillään, ja käytä sitten laskutoimitusta grep -c:

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

vastaus

Helpoin tapa on,

grep -wc "your_text" FileName 

sinulle se tulee olemaan,

grep -wc "iPhone" Tweet_Data 

kommentit

  • Erittäin puhdas vastaus, jos sopivat sanaan, kuten ' cool ', vastaat vain viileää ja EI ccoollia, joten muista, että välit sanan ympärillä. li>
  • Tulos on virheellinen, kun sana esiintyy useammin kuin kerran rivillä.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *