Pergunta

Usando o mesmo classificação comando com a mesma entrada produz resultados diferentes em máquinas diferentes.Como faço para corrigir isso?

Foi útil?

Solução

O homem-página no OS X diz:

******* AVISO ******* A localidade especificada pelo ambiente afecta a ordem de classificação.Conjunto LC_ALL=C para obter a tradicional ordem de classificação que usa o nativo de valores de byte.

o que poderá explicar as coisas.

Se alguns de seus sistemas não têm nenhum suporte a localidade, que seria padrão para essa localidade (C), assim você não teria para aqueles.Se você tem algum que ofereça suporte a locales e deseja que o mesmo comportamento, defina LC_ALL=C nesses sistemas.Essa seria a maneira como muitos sistemas, como eu sei fazê-lo da mesma forma.

Se você não tem qualquer localidade menos sistemas, apenas se certificar de que eles compartilham localidade provavelmente seria o suficiente.

Para mais canônico informações, consulte o Single UNIX Specification, Versão 2 descrição do localidade, variáveis de ambiente, setlocale() e a descrição do classificação(1) utilitário.

Outras dicas

Isso pode ser o resultado de diferenças de localidade:

$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_


$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_

Definir a variável de ambiente LC_ALL para o mesmo valor deve corrigir o problema.

Este é, provavelmente, devido às diferentes definições do localidade variáveis de ambiente. sort use essas configurações para determinar como comparar cadeias de caracteres.Definindo as variáveis de ambiente do jeito que você quer antes de chamar sort, você deve ser capaz de forçá-lo a se comportar de uma maneira específica.

Por mais que você sempre quis saber sobre sort, leia o especificação de sort no Single Unix Specification v3.Ele afirma

Comparações [...] deve ser realizado usando a sequência de agrupamento da localidade atual.

IOW, como sort o tipo é dependente do idioma configurações do ambiente em que o script está sendo executado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top