strange problem: join: o arquivo 2 não está em ordem de classificação

1
sort flash_int_list.txt|join finish_comm - > t1
join: file 2 is not in sorted order

Eu classifiquei flahs_int_list.txt mas ainda diz que o arquivo 2 não está em ordem de classificação o que está errado?

o flash_int_list.txt é como (apenas as primeiras 2 linhas são mostradas, tem 1000 linhas):

1     8cvGIKL7C-M   1  1         1         0    0    0    0  -28
9     27ugSKW4-QQ   1  3         3         0    0    0    0  -28
    
por wenzi 16.11.2012 / 16:21

3 respostas

1

Infelizmente, a página man diz que sort <no options> | join <no options> não funciona:

   Important: FILE1 and FILE2 must be sorted on the join fields.  E.g.,
   use ' sort -k 1b,1 ' if 'join' has no options, or use ' join -t '' ' if
   'sort' has no options.

Você pode tentar:

sort flash_int_list.txt | join -t '' finish_comm - > t1

ou:

sort -k 1b,1 flash_int_list.txt | join finish_comm - > t1
    
por 16.11.2012 / 16:53
1

As opções -1 FIELD -2 FIELD de join definem em qual campo de cada arquivo a ser unido. O campo de junção padrão é o primeiro, delimitado por espaço em branco.

E a opção -k de sort define qual chave deve ser usada para classificar. Se nenhuma chave for dada, use a linha inteira como chave.

Portanto, certifique-se de quais arquivos você deseja participar e os dois arquivos foram classificados nesses arquivos.

Veja man join man sort para detalhes.

    
por 16.11.2012 / 18:38
1

Você costuma ver a associação usada com a substituição de processos

join finish_comm <(sort flash_int_list.txt) > t1
    
por 17.11.2012 / 00:40

Tags