¿Cómo crear una lista de frecuencias de cada palabra en un archivo?
Tengo un archivo 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>
Me gustaría generar una lista de dos columnas. La primera columna muestra qué palabras aparecen, la segunda columna muestra con qué frecuencia aparecen, por ejemplo:
<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 hacer este trabajo más simple, antes de procesar la lista, eliminaré toda puntuación y cambiaré todo el texto a letras minúsculas.A menos que haya una solución simple a su alrededor,
words
yword
Puede contar como dos palabras separadas.Hasta ahora, tengo esto:
<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 alguna razón, esto solo muestra "0" después de cada palabra.
¿Cómo puedo generar una lista de cada palabra que aparece en un archivo, junto con la información de frecuencia?