Como ordenar múltiplas colunas com uma coluna incluindo data?

0

Eu estou tentando classificar um arquivo da seguinte forma, que tem várias colunas, separadas por vírgula, e uma das colunas tem data com o seguinte formato mm / dd / aaaa.

$cat filename

AN1143,45.7,03/05/2012,
H9477,45.3,01/15/2010,
DN1222,45.1,03/05/1800,
J960,26.7,06/02,1990,
Z959,28.2,03/21/2016,
H12421,27.7,06/21/2000

Minha intenção é classificar primeiro com base na primeira coluna e depois na terceira coluna que possui a data. Eu tentei o seguinte comando:

sort -t"," -k1,1 -k3,9n.3,10n -k3,1n.3,2n -k3,4n.3,5n filename 

mas eu enfrentei este erro qualquer ajuda com a explicação é apreciada.

sort: stray character in field spec: invalid field specification â3,9n.3,10nâ

    
por Daniel 28.11.2016 / 17:32

1 resposta

6

Tente isso:

sort -t, -k1,1 -k3.7n -k3.1,3.2n -k3.4,3.5n < filename
  • Não é necessário citar o delimitador de vírgula
  • A primeira definição de chave de classificação usa a coluna 1
  • A segunda definição de chave de classificação usa o campo "ano" da coluna 3, classificada numericamente
  • A terceira chave de classificação usa o campo "mês" da coluna 3, classificada numericamente
  • A quarta chave de classificação usa o campo "dia" da coluna 3, classificada numericamente

Exemplo de execução com um arquivo de dados de amostra aprimorado, mostrando a classificação:

Entrada:

AN1143,45.7,03/05/2012,
AN1143,45.7,02/05/2012,
AN1143,45.7,03/04/2012,
AN1143,45.7,03/05/2011,
H9477,45.3,01/15/2010,
DN1222,45.1,03/05/1800,
J960,26.7,06/02,1990,
Z959,28.2,03/21/2016,
H12421,27.7,06/21/2000

Saída:

AN1143,45.7,03/05/2011,
AN1143,45.7,02/05/2012,
AN1143,45.7,03/04/2012,
AN1143,45.7,03/05/2012,
DN1222,45.1,03/05/1800,
H12421,27.7,06/21/2000
H9477,45.3,01/15/2010,
J960,26.7,06/02,1990,
Z959,28.2,03/21/2016,
    
por 28.11.2016 / 17:43