Como criar uma lista de frequência de cada palavra em um arquivo?
Eu tenho um arquivo como este:
<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>
Eu gostaria de gerar uma lista de duas colunas. A primeira coluna mostra quais palavras aparecem, a segunda coluna mostra com que frequência elas aparecem, por exemplo:
<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>Para simplificar o trabalho, antes de processar a lista, removerei toda a pontuação e alterarei todo o texto para letras minúsculas.A menos que haja uma solução simples em torno disso,
words
eword
pode contar como duas palavras separadas.Até agora, eu tenho isso:
<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>
Por algum motivo, isso só mostra "0" após cada palavra.
Como posso gerar uma lista de todas as palavras que aparecem em um arquivo, juntamente com informações de frequência?