Как создать частотный список каждого слова в файле?

У меня есть такой файл:

This is a file with many words.
Some of the words appear more than once.
Some of the words only appear one time.

Я хотел бы сгенерировать список из двух столбцов. Первый столбец показывает, какие слова появляются, второй столбец показывает, как часто они появляются, например:

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 
  • Чтобы упростить эту работу, перед обработкой списка я уберу все знаки препинания и заменю весь текст строчными буквами.
  • Если нет простого решения, словаи словамогут считаться двумя отдельными словами.

На данный момент у меня есть это:

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

По какой-то причине это показывает только "0" после каждого слова.

Как создать список всех слов, встречающихся в файле, вместе с частотной информацией?

33
задан Unihedron 15 December 2014 в 14:08
поделиться