Eu tenho um diretório cheio de arquivos de texto simples que possuem tags na primeira linha, e eu quero obter uma lista das tags e sua frequência. Eu extraí as tags e as classifiquei em uma lista grande; digamos que seja assim:
apple
banana
banana
banana
banana
orange
orange
kumquat
pomegranate
pineapple
pineapple
pineapple
Eu, então, canalizo através de uniq -c
para transformá-lo em uma lista com contagens:
1 apple
4 banana
2 orange
1 kumquat
1 pomegranate
3 pineapple
Agora gostaria de classificá-lo, primeiro por número na ordem inversa (os maiores números primeiro) e, em seguida, em encaminhar ordem alfabética. Eu tento fazer isso percorrendo sort -bnr
(ignorar espaço em branco inicial, classificação numérica, em ordem reversa), mas o -r
também se aplica à parte da letra:
4 banana
3 pineapple
2 orange
1 pomegranate
1 kumquat
1 apple
Pensei na opção -k
para classificar por vários campos, sobre os quais acabei de saber, mas parece que a reversão não pode ser aplicada separadamente para diferentes opções de -k
(talvez apenas coloque a opção saída através de tac
ou algo assim?). Pipá-lo através de um segundo sort
não funciona porque ignora a classificação anterior e mistura novamente a parte numérica.
Idealmente, a solução ainda usaria sort
e uniq
, mas estou aberto a mudar para uma ferramenta diferente, se necessário. Isso pode acabar em um script, portanto, uma solução que exija ferramentas interativas está fora.