LINUX.ORG.RU

влоб: сплитнуть переменную по пробелу, для каждого слова выдавать в stout длину слова и собственно слово. сортировать по первому полю, брать второе. потом собрать слово в переменную разделенным пробелами.
для сплита и сбора в строку я люблю xargs:

echo "$var"  | xargs -n1 | while read w ; do echo ${#w} $w ; done | sort -nr | awk '{print $2}' | xargs echo


можно попробовать как-то так:
for w in $var ; do echo ${#w} $w ; done | sort -nr |  awk '{printf("%s ",$2)}'  

bl ★★★
()
$ echo "fh stuj h rso8gd yqs" | awk 'BEGIN { RS="[ \n]"; PROCINFO["sorted_in"] = "@ind_num_desc" } { a[length] = a[length] $0 " " } END { for (k in a) printf("%s", a[k]) }'
rso8gd stuj yqs fh h 
unterwulf
()

Если под рукой оказался Перл:

var="fh stuj h rso8gd yqs"
echo $var | perl -ape '$_=join" ",sort{length($b)<=>length($a)}@F'
# rso8gd stuj yqs fh h

evbogdanov
()
Ответ на: комментарий от RazrFalcon

bash:

echo 'fh stuj h rso8gd yqs'| python3 -c "print(' '.join(sorted(input().split(), key=len, reverse=True)))"
aedeph_ ★★
()
Последнее исправление: aedeph_ (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.