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?