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ä.
cut -f1
leikkaa välilehdet, jotka eivät ole ' t tekemässä paljon täällä. Oletko varma, ettäwc -l
antaa sinulle oikean määrän? Se näyttäisi tässä 2, mutta lasken kolme " iPhone-esiintymää ".