Использование смарт-карты с GPG в CentOS 8 Stream

Нет реальной необходимости предварительно обрабатывать текст, заменяя пробелы на новые строки и т. д., особенно если вы хотите объединить операции в один awkскрипт.

$ awk '{ for (i=1; i<=NF; ++i) count[$i]++ } END { for (word in count) print count[word], word }' file
4 the
2 sunny
3 is
1 day

Это обходит каждое слово, -разделенное пробелом, и подсчитывает его. Счетчики хранятся в массиве count, который индексируется по словам. В конце выводятся отсчеты и соответствующие им слова. Это автоматически пропустит пустые строки, так как они не содержат слов.

Если вам нужно отсортировать это, передайте его через sort -n.

Если вы используете GNU awk, вы можете использовать его функцию asorti()для сортировки в блоке END:

END {
    n = asorti(count, c2, "@val_num_desc")
    for (i=1; i<=n; i++ )
        printf("%d %s %s\n", i, count[c2[i]], c2[i])
}
0
09.08.2021, 03:31
0 ответов

Теги

Похожие вопросы