сортировать слова в тексте по числу цитирований в одной строке - PullRequest
1 голос
/ 12 апреля 2019

искать наиболее часто встречающиеся слова в тексте, отсортированные по номерам, напечатанным в одной строке для каждого числа

    grep -oE '[[:alpha:]]' file.txt | sort | uniq -c | sort -nr

это дает

3 linux
3 fedora
2 ubuntu
2 mandriva

я ищу

3 linux fedora
2 ubuntu mandriva


    grep -oE '[[:alpha:]]' file.txt | sort | uniq -c | sort -nr

результат

 3 linux
 3 fedora
 2 ubuntu
 2 mandriva

Я ищу

 3 linux fedora
 2 ubuntu mandriva

1 Ответ

0 голосов
/ 12 апреля 2019

Я не смог сделать это в bash oneliner, но у меня это есть в коротком скрипте на python, если это работает для вас.

import os

preMergedList = os.popen("grep -o -E '\w+' file.txt | sort | uniq -c | sort -nr").readlines()

countDict = {}
for line in preMergedList:
    count, word = line.split(None)
    count = int( count.strip() )
    word = word.strip()
    if not countDict.has_key( count ):
        countDict[count] = ""
    countDict[count] += word + " "

for count, wordString in sorted( countDict.iteritems(), reverse=True ):
    print count, wordString

...