Se essa lista estivesse em file , um por linha, eu faria algo como:
sort -nu file |
awk 'NR == FNR {rank[$0] = NR; next}
{print rank[$0]}' - file
Se estivesse em um zsh $array :
sorted=(${(nou)array})
for i ($array) echo $sorted[(i)$i]
Esse é o mesmo princípio que para a versão awk acima, a classificação é o índice NR / (i) no numericamente ( -n / (n) ) ordenado ( sort / (o) ), uniqued ( -u / (u) ) lista de elementos.
Para sua classificação média:
sort -n file |
awk 'NR == FNR {rank[$0] += NR; n[$0]++; next}
{print rank[$0] / n[$0]}' - file
O que dá:
5
7
1
6
2.5
2.5
4
(use sort -rn para reverter a ordem, como na sua versão do Google Spreadsheet ).