Eu tenho um arquivo de dados da seguinte forma;
ALIC 5.55 2.65 3.45
ALIC 2.56 2.78 3.99
AMC4 3.55 3.66 4.88
AMC4 3.00 3.67 4.78
ALIC 1.00 1.00 1.00
ALIC 0.95 1.00 1.00
AMC4 0.50 1.00 1.00
AMC4 0.01 1.00 1.00
Eu preciso classificar essas linhas com strings na primeira coluna da seguinte maneira;
ALIC 5.55 2.65 3.45
ALIC 2.56 2.78 3.99
ALIC 1.00 1.00 1.00
ALIC 0.95 1.00 1.00
AMC4 3.55 3.66 4.88
AMC4 3.00 3.67 4.78
AMC4 0.50 1.00 1.00
AMC4 0.01 1.00 1.00
Mas quando executo sort -k 1 data
, vejo que os valores numéricos na segunda coluna são classificados em ordem crescente. Qual comando produz a classificação acima?
Há duas coisas que você precisa fazer.
Primeiro,
sort -k 1
começa na chave 1, mas por padrão para no final da linha: para classificar apenas na chave 1, você precisa-k 1,1
Em segundo lugar, por padrão, o GNU
sort
executa uma classificação final de "último recurso" em toda a linha - para suprimir isso, você precisa adicionar a--stable
opção.Então
Isso classificará pela primeira coluna em ordem crescente (como de costume) e, em seguida, pela segunda coluna em ordem decrescente (inversa). A segunda coluna é interpretada como um número:
Você pode querer adicionar o
--debug
sinalizador para ver exatamente em quais teclassort
operam: