Especifique as chaves de classificação separadamente com os critérios:
sort -k1,1nr -k2,2 inputfile
Isso especifica que a primeira chave é classificada numericamente na ordem inversa, enquanto a segunda é classificada de acordo com a ordem de classificação padrão .
Citando a partir da classificação POSIX :
-k keydef
O argumento keydef é uma definição de campo de chave de classificação restrita. O formato desta definição é:
field_start [ type ] [ , field_end [ type ]]
em que field_start e field_end definem um campo-chave restrito a uma parte da linha (consulte a seção DESCRIÇÃO ESTENDIDA) e type é um modificador da lista de caracteres 'b', 'd', 'f', 'i', ' n ',' r '. O modificador 'b' deve se comportar como a -b
opção, mas deve ser aplicado apenas ao field_start ou field_end ao qual está anexado. Os outros modificadores devem se comportar como as opções correspondentes, mas aplicam-se apenas ao campo-chave ao qual estão anexados; eles terão esse efeito se especificados com field_start , field_end ou ambos., nenhuma opção se aplica a nenhum dos dois. As implementações devem suportar pelo menos nove ocorrências da -k
opção, que devem ser significativas na ordem da linha de comando. Se nenhuma -k
opção for especificada, uma chave de classificação padrão de toda a linha deve ser usada.
Quando houver vários campos de chave, as chaves posteriores serão comparadas somente depois que todas as chaves anteriores forem iguais. Excepto quando a -u
opção for especificado, as linhas que de outra forma compare igual devem ser ordenados como se nenhuma das opções -d
, -f
, -i
, -n
, ou -k
estavam presentes (mas com -r
ainda com efeito, se foi especificada) e com todos os bytes em linhas significativas para o comparação. A ordem na qual as linhas que ainda se comparam são escritas não é especificada.
Isso produziria:
42 Life
17 Stackoverflow
12 Hi
9 LaTeX
9 Superuser
9 Ubuntu
7 C++
7 Hash
-g
(numérico geral) em vez de-n
para comparações numéricas é mais seguro: funciona corretamente para ponto flutuante e números inteiros.