Jak utworzyć listę częstotliwości każdego słowa w pliku?

Mam taki plik:

<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>

Chciałbym wygenerować listę dwukolumnową. Pierwsza kolumna pokazuje, jakie słowa pojawiają się, druga kolumna pokazuje, jak często się pojawiają, na przykład:

<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>
Aby ułatwić tę pracę, przed przetworzeniem listy usunę wszystkie znaki interpunkcyjne i zmienię tekst na małe litery.Chyba że jest wokół niego proste rozwiązanie,words iword może liczyć się jako dwa oddzielne słowa.

Do tej pory mam to:

<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>

Z jakiegoś powodu pokazuje tylko „0” po każdym słowie.

Jak mogę wygenerować listę każdego słowa, które pojawia się w pliku, wraz z informacjami o częstotliwości?

questionAnswers(10)

yourAnswerToTheQuestion