Ich habe eine Textdatei mit Tweets und muss zählen, wie oft ein Wort im Tweet erwähnt wird Die Datei enthält beispielsweise:

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? 

Angenommen, ich möchte zählen, wie oft das Wort iPhone in der Datei erwähnt wird. Also hier ist, was ich versucht habe.

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

es funktioniert sicherlich, aber ich bin verwirrt über den Befehl „wc“ in Unix. Was ist der Unterschied Wenn ich etwas versuche wie:

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

wobei stattdessen -c verwendet wird? Beide führen zu unterschiedlichen Ergebnissen in einer großen Datei voller Tweets, und ich bin verwirrt wie es funktioniert. Auf welche Methode wird das Auftreten richtig gezählt?

Kommentare

Antwort

Bei einer solchen Anforderung würde ich Verwenden Sie ein GNU-Grep (für die Option -o ) und führen Sie es dann durch wc, um die Gesamtzahl der Vorkommen zu zählen:

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

Einfach grep -c In den Daten wird die Anzahl der übereinstimmenden Zeilen gezählt, nicht die Gesamtzahl der übereinstimmenden Wörter . Mit der Option -o wird grep angewiesen, jede Übereinstimmung in einer eigenen Zeile auszugeben, unabhängig davon, wie oft die Übereinstimmung in der ursprünglichen Zeile gefunden wurde.

wc -l weist das Dienstprogramm wc an, die Anzahl der Zeilen zu zählen. Nachdem grep jede Übereinstimmung in eine eigene Zeile gesetzt hat, ist dies die Gesamtzahl der Vorkommen des Wortes in der Eingabe.


Wenn GNU grep nicht verfügbar (oder gewünscht) ist, können Sie das transformieren Geben Sie mit tr ein, sodass jedes Wort in einer eigenen Zeile steht. Verwenden Sie dann grep -c, um zu zählen:

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

Antwort

Die einfachste Methode ist

grep -wc "your_text" FileName 

für Sie wird es sein,

grep -wc "iPhone" Tweet_Data 

Kommentare

  • Sehr saubere Antwort jedoch, wenn Sie stimmen mit einem Wort wie ' cool überein ' Sie stimmen nur mit cool und NICHT ccooll überein. Beachten Sie also, dass Leerzeichen um das Wort herum wichtig sind. li>
  • Das Ergebnis ist falsch, wenn das Wort mehr als einmal in einer Zeile vorkommt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.