Ich habe eine Textdatei mit Tweets und muss zählen, wie oft ein Wort im Tweet erwähnt wird. Zum Beispiel enthält die Datei:
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 auf jeden Fall, aber ich bin verwirrt über den Befehl 'wc' in Unix. Was ist der Unterschied, wenn ich etwas probiere wie:
cut -f 1 Tweet_Data | grep -c "iPhone"
Wo wird stattdessen -c verwendet? Beide ergeben unterschiedliche Ergebnisse in einer großen Datei voller Tweets und ich bin verwirrt darüber, wie es funktioniert. Mit welcher Methode kann das Vorkommen richtig gezählt werden?
text-processing
grep
cut
Maxxx
quelle
quelle
cut -f1
schneidet auf der Basis von Tabs, was hier nicht viel bringt. Sind Sie sicher,wc -l
dass Sie wirklich die richtige Anzahl erhalten? Es würde hier 2 anzeigen, aber ich zähle 3 Instanzen von "iPhone".Antworten:
In Anbetracht einer solchen Anforderung würde ich ein GNU-grep (für die
-o
Option ) verwenden und es dann durchlaufen,wc
um die Gesamtzahl der Vorkommen zu zählen:Anhand
grep -c
der Daten wird die Anzahl der übereinstimmenden Zeilen gezählt , nicht die Gesamtzahl der übereinstimmenden Wörter . Mit der-o
Option wird grep angewiesen, jede Übereinstimmung in der eigenen Zeile auszugeben, unabhängig davon, wie oft sich die Übereinstimmung in der Zeile befindet.wc -l
Weist daswc
Dienstprogramm an, die Anzahl der Zeilen zu zählen. Nachdem grep jede Übereinstimmung in eine eigene Zeile gestellt hat, ist dies die Gesamtzahl der Vorkommen des Wortes in der Eingabe.Wenn GNU grep nicht verfügbar ist (oder gewünscht wird), können Sie die Eingabe
tr
so transformieren , dass jedes Wort in einer eigenen Zeile steht. Verwenden Sie danngrep -c
zum Zählen:quelle
Die einfachste Methode ist,
für sie wird es sein,
quelle