Por que o Sort.exe está truncando a saída grande no Windows de 32 bits?

2

Temos um arquivo de dados de um cliente que tem 1,443,777,659 bytes de tamanho.

A saída ordenada tem linhas faltando e tem apenas 1.269.801.985 bytes de tamanho.

Exemplo de comando: sort -k 1,10 -T. -s -i file_to_sort.txt -o out.txt

Nós testamos os sistemas Win 7 e XP de 32 bits.

Nós tentamos o sort.exe fornecido que vem com o Windows, assim como os binários do UnxUtils e do Gutu Coreutils.

Nenhum apresenta um erro, no entanto, todos resultam no mesmo tamanho de saída. Eu tentei outro utilitário freeware que funciona, mas é muito mais lento.

Acredito que isso possa ser devido a uma limitação de 32 bits, mas o tamanho do arquivo não parece próximo dos suspeitos usuais, e esses programas funcionam escrevendo e mesclando arquivos menores, nenhum dos quais se aproxima de 2 GB. tamanho.

Alguma dica de como chegar ao fundo disso? Obrigado.

    
por Nick P 18.07.2013 / 07:28

2 respostas

1

OK, então o problema não estava relacionado ao tamanho do arquivo. Parece que o arquivo está aberto no modo de texto e contém um caractere 0x1A (^ Z ou EOF no Windows) perto do fim.

Depois de atingir esse caractere durante a entrada, ele pára a leitura. Não há como evitar isso, pois não há sinalizador para abrir o arquivo como binário.

Eu deveria ter achado isso mais rápido, mas não é tão fácil cavar em torno de um arquivo de 1,5 GB:)

Consulta relacionada: link

    
por 19.07.2013 / 02:53
0

Você não deseja ignorar caracteres não imprimíveis se o arquivo os contiver. Solte a opção -i e execute com LC_ALL = C.

por exemplo,

export LC_ALL=C
sort -k 1,10 -s <file_to_sort.txt >out.txt
    
por 18.07.2013 / 08:48