Ik heb een tekstbestand met tweets en ik moet het aantal keren tellen dat een woord in de tweet wordt genoemd Het bestand bevat bijvoorbeeld:

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? 

En laten we zeggen dat ik wil tellen hoe vaak het woord iPhone in het bestand wordt genoemd. Dus hier is wat ik heb geprobeerd.

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

het werkt zeker, maar ik ben in de war over het “wc” -commando in unix. Wat is het verschil als ik iets probeer als:

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

waar -c in plaats daarvan wordt gebruikt? Beide leveren verschillende resultaten op in een groot bestand vol tweets en ik ben in de war over hoe het werkt. Welke methode is de juiste manier om het voorkomen te tellen?

Reacties

Antwoord

Gegeven een dergelijke vereiste, zou ik gebruik een GNU grep (voor de -o optie ), en geef deze door wc om het totale aantal keren te tellen:

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

Gewoon grep -c op de gegevens telt het aantal regels dat overeenkomt, niet het totale aantal woorden dat overeenkomt. Door de optie -o te gebruiken, vertelt grep dat elke overeenkomst op zijn eigen regel moet worden weergegeven, ongeacht hoe vaak de overeenkomst in de originele regel is gevonden.

wc -l vertelt het wc hulpprogramma om het aantal regels te tellen. Nadat grep elke overeenkomst op een eigen regel heeft geplaatst, is dit het totale aantal keren dat het woord in de invoer voorkomt.


Als GNU grep niet beschikbaar (of gewenst) is, zou je de invoer met tr zodat elk woord op een eigen regel staat, gebruik dan grep -c om te tellen:

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

Antwoord

De eenvoudigste methode is

grep -wc "your_text" FileName 

voor jou zal het zijn,

grep -wc "iPhone" Tweet_Data 

Reacties

  • Zeer duidelijk antwoord echter als je komen overeen met een woord als ' cool ' je komt alleen overeen met cool en NIET ccooll, dus houd er rekening mee dat spaties rond het woord er toe doen.
  • Het resultaat zal onjuist zijn als het woord meer dan eens op een regel voorkomt.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *