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?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage