Domanda

Usando lo stesso ordinare il comando con lo stesso input produce risultati diversi su macchine diverse.Come posso risolverlo?

È stato utile?

Soluzione

IL pagina man su OS X dice:

******* ATTENZIONE ******* Le impostazioni locali specificate dall'ambiente influiscono sull'ordinamento.Imposta LC_ALL = C per ottenere l'ordine di ordinamento tradizionale che utilizza valori di byte nativi.

il che potrebbe spiegare le cose.

Se alcuni dei tuoi sistemi non hanno supporto locale, utilizzerebbero per impostazione predefinita quel locale (C), quindi non dovresti impostarlo su quelli.Se ne hai qualcuno che supporta le impostazioni locali e desideri lo stesso comportamento, imposta LC_ALL=C su quei sistemi.Questo sarebbe il modo per far sì che tutti i sistemi che conosco facciano lo stesso.

Se non disponi di sistemi senza locale, probabilmente sarebbe sufficiente assicurarti che condividano la locale.

Per ulteriori informazioni canoniche, consultare la descrizione di The Single UNIX ® Specifica, Versione 2 di locale, variabili ambientali, setlocale() e la descrizione del ordinare(1) utilità.

Altri suggerimenti

Questo può essere il risultato di differenze locali:

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


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

L'impostazione della variabile di ambiente LC_ALL sullo stesso valore dovrebbe risolvere il problema.

Ciò è probabilmente dovuto alle diverse impostazioni del file variabili d'ambiente locali. sort utilizzerà queste impostazioni per determinare come confrontare le stringhe.Impostando queste variabili di ambiente nel modo desiderato prima di chiamare sort, dovresti essere in grado di forzarlo a comportarsi in un modo specifico.

Per più di quanto avresti mai voluto sapere sort, leggi il specifica di sort nel Specifica Unix singola v3.Afferma

I confronti [...] saranno eseguiti utilizzando la sequenza di raccolta della locale corrente.

IOW, come sort sorts dipende dalle impostazioni locali (lingua) dell'ambiente in cui viene eseguito lo script.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top