Usei o comando sort para classificar numericamente o arquivo1.txt.
~]# sort -n -o file1.txt file1.txt
0 Barack
50 George
60 Ronald
100 Bill
O comando sort check informa que o arquivo não está classificado.
~]# sort -c file1.txt
sort: file1.txt:4: disorder: 100 Bill
Eu 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 sort check não produz stdout ou stderr, o que significa que o arquivo está classificado corretamente. Depois de devidamente classificados, 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? Não posso fazer isso manualmente, pois a aplicação real desse problema lida com centenas de linhas de texto processadas por um trabalho diário.
Se você deseja usar um arquivo com
join
, precisa garantir que ele esteja classificado lexicograficamente na chave de junção, o que significa que você não deve usar-n
comsort
. Você sempre pode classificar o resultado dajoin
operação novamente numericamente.Ao executar
sort -c
, você precisa especificar os mesmos parâmetros de classificação usados para classificar o arquivo: portanto, se quiser verificar se um arquivo está classificado numericamente, executesort -c -n
.Portanto, no seu caso, execute
sort -o file1.txt file1.txt
para classificar o arquivo lexicograficamente para uso comjoin
(usando o primeiro campo como o campo de junção).