Написать в файл наиболее распространенных слов с помощью счетчика с Linux

0

Я хочу записать в файл слова, которые появляются по крайней мере X раз в тексте. Например, для:

a
b
a
c
b

и Х = 2 я бы получил:

a
b
Shani Gamrian
источник
Какие у вас исследования? Что вы сами попробовали?
Kamil Maciorowski
Я нашел способ вернуть наиболее часто встречающиеся слова с помощью: sort test.txt | uniq -c | сортировать -rn | head -n 12 или: sort test.txt | uniq -c | сортировать -rn | голова -n 12 | sed -E 's / ^ * [0-9] + // g'
Shani Gamrian
Принятый ответ на этот вопрос количество появлений слова в текстовом файле может удовлетворить ваши потребности.
Nevin Williams

Ответы:

0

Это делает основы, хотя это будет довольно медленно в большом списке слов:

set Count
sort < WordList | uniq | while read w; \
    do [ $(grep -c "^$w$" WordList) -ge $1 ] && echo $w; done

Более быстрый ответ (спасибо Камилю Мачоровски): -

set Count
sort < WordList | uniq -c | while read c w; do [ $c -ge $1 ] && echo $w; done

Это предполагает: -

  • Вы установите свой собственный FileList а также Count записей.
  • Слова по одному в строке WordList,
  • Случай значительный (например, The а также the разные).
  • Это запись командной строки: в скрипте set Count будет опущен и передан в качестве параметра.

Это должно помочь вам начать работу, хотя вам почти наверняка понадобится внести изменения в соответствии с вашими потребностями.

AFH
источник
что вы имеете в виду, когда говорите: вы будете устанавливать свои собственные записи FileList и Count.?
Shani Gamrian
Это может быть быстрее с uniq -c (дальнейшая логика должна быть перестроена, конечно).
Kamil Maciorowski
@ShaniGamrian - FileList имя файла, содержащего слова; Count это количество записей, которые вы хотите проверить. Я думал, что это будет очевидно: извините, если это не было ясно для вас.
AFH
@KamilMaciorowski - Спасибо за ваше предложение: я забыл о uniq -c и это намного проще и быстрее. Я добавил это в свой ответ.
AFH
Спасибо!!! Как мне записать результаты в файл?
Shani Gamrian