gawk ' { for(i = 1; i <= NF; i++) { arr[$i]++ } } END { PROCINFO["sorted_in"] = "@val_num_desc" for(i in arr) { printf "%s@%s ", i, arr[i] } print "" } ' FPAT='[a-zA-Z]+' input.txt
Пояснение
PROCINFO["sorted_in"] = "@val_num_desc"
-Упорядочивание по значениям элементов в порядке убывания (, а не по индексам ). Скалярные значения сравниваются как числа. См. Предопределенные порядки сканирования массива .
FPAT='[a-zA-Z]+'
-Регулярное выражение, описывающее содержимое полей в записи. Если установлено,gawk
анализирует ввод в поля, где поля соответствуют регулярному выражению, вместо используя значение переменной FS в качестве разделителя полей.Вход
This is a test Test test test There are multiple tests. This is a test Test test test There are multiple tests. This is a test Test test test There are multiple tests.
Выход
test@9 tests@3 Test@3 multiple@3 a@3 This@3 There@3 are@3 is@3
Вы даете какой-то вариант вашему сценарию, но никогда не передаете его cowsay
.
Для этого используйте
fortune | cowsay "$@"
в вашем скрипте. "$@"
расширится до списка аргументов командной строки, которые были переданы вашему сценарию, например, опции -d
, если это то, с чем вы вызывали свой сценарий.