A classificação numérica falha ao classificar corretamente o arquivo

0

Eu usei o comando sort para classificar numericamente file1.txt.

~]# sort -n -o file1.txt file1.txt
0 Barack
50 George
60 Ronald
100 Bill

O comando de verificação de classificação indica que o arquivo não está classificado.

~]# sort -c file1.txt
sort: file1.txt:4: disorder: 100 Bill

Modifico manualmente o arquivo e coloco "100 Bill" em segundo lugar.

~]# cat file1.txt
0 Barack
100 Bill
50 George
60 Ronald

Agora, o comando de verificação de classificação não produz stdout nem stderr, o que significa que o arquivo está classificado corretamente. Depois de devidamente classificado, agora posso juntar os arquivos. Parece que o primeiro caractere está sendo usado para saber se o arquivo está classificado em vez do inteiro inteiro.

sort -c file1.txt

Existe uma maneira de classificar o arquivo para que "100 Bill" esteja na linha 2? Eu não posso fazer isso manualmente, como a aplicação real desta questão lida com centenas de linhas de texto processadas por um trabalho diário.

    
por JeremyCanfield 19.01.2018 / 14:33

1 resposta

5

Se você quiser usar um arquivo com join , você precisa se certificar ele é classificado lexicograficamente na chave de junção, o que significa que você não deve usar -n com sort . Você sempre pode classificar o resultado da operação join novamente numericamente.

Quando você executar sort -c , precisará especificar os mesmos parâmetros de classificação usados para classificar o arquivo: portanto, se quiser verificar se um arquivo é classificado numericamente, execute sort -c -n .

Assim, no seu caso, execute sort -o file1.txt file1.txt para ordenar o arquivo lexicograficamente para uso com join (usando o primeiro campo como campo de junção).

    
por 19.01.2018 / 14:43

Tags