Wie erstelle ich eine Häufigkeitsliste für jedes Wort in einer Datei?
Ich habe eine Datei wie diese:
<code>This is a file with many words. Some of the words appear more than once. Some of the words only appear one time. </code>
Ich möchte eine zweispaltige Liste erstellen. Die erste Spalte zeigt, welche Wörter erscheinen, die zweite Spalte zeigt, wie oft sie erscheinen, zum Beispiel:
<code>this@1 is@1 a@1 file@1 with@1 many@1 words3 some@2 of@2 the@2 only@1 appear@2 more@1 than@1 one@1 once@1 time@1 </code>Um diese Arbeit zu vereinfachen, entferne ich vor dem Verarbeiten der Liste alle Satzzeichen und ändere den gesamten Text in Kleinbuchstaben.Es sei denn, es gibt eine einfache Lösung,
words
undword
kann als zwei getrennte Wörter zählen.Bisher habe ich Folgendes:
<code>sed -i "s/ /\n/g" ./file1.txt # put all words on a new line while read line do count="$(grep -c $line file1.txt)" echo $line"@"$count >> file2.txt # add word and frequency to file done < ./file1.txt sort -u -d # remove duplicate lines </code>
Aus irgendeinem Grund wird hier nur "0" nach jedem Wort angezeigt.
Wie kann ich eine Liste aller Wörter in einer Datei zusammen mit Informationen zur Häufigkeit erstellen?