Eu sei que a opção -k para a classificação do Unix nos permite classificar por uma coluna específica e todos os seguintes . Por exemplo, dado o arquivo de entrada:
2 3
2 2
1 2
2 1
1 1
Usando sort -n -k 1
, recebo uma saída classificada pela 1ª coluna e depois pela 2ª:
1 1
1 2
2 1
2 2
2 3
No entanto, quero manter a segunda coluna em ordem, assim:
1 2
1 1
2 3
2 2
2 1
Isso é possível com o sort
comando?
join
é que a entrada seja classificada nos campos nos quais você está ingressando. Então, com certeza, essa saída está classificada no primeiro campo e você pode participar.-k 1,1
(a parte " , 1 ") não funciona melhor para mim. O que funciona é-s -k 1
,-n
se você precisar.Para classificar apenas na primeira coluna, você deve fazer:
No manual de administração de sistemas Unix e Linux
fonte
-s
opção, como apontou Cascabel.-s
diz "Esta opção mantém a ordem original dos registros com uma chave igual".Nenhuma das respostas fornecidas funciona geralmente para mim.
Ambos
sort -s -k 2 file1
esort -n -k1,1
faça uma classificação adicional com este arquivo:Eu só tinha que fazer exatamente isso e acabei usando um loop de shell. Essa solução pode não funcionar bem em um arquivo muito grande porque o arquivo inteiro precisa ser lido para cada valor exclusivo na coluna classificada.
Aqui, o arquivo é classificado apenas na coluna 2.
fonte
sort -s -k2,2 file1