2008-08-26 25 views
11

उसी सॉर्ट उसी इनपुट के साथ कमांड विभिन्न मशीनों पर अलग-अलग परिणाम उत्पन्न करता है। मुझसे इसका समाधान किस प्रकार होगा? उसी मूल्य का LC_ALL वातावरण चर स्थापना समस्या को दूर करना चाहिएक्यों ** सॉर्ट नहीं करता ** प्रत्येक मशीन पर समान सॉर्ट करें?

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


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

:

उत्तर

20

man-page ओएस एक्स पर कहते हैं:

******* चेतावनी ******* स्थान पर्यावरण द्वारा निर्दिष्ट सॉर्ट क्रम को प्रभावित करता है। प्राप्त करने के लिए पारंपरिक बार्ट मानों का उपयोग करने वाले पारंपरिक क्रम क्रम को LC_ALL = C सेट करें।

जो चीजों को समझा सकता है।

यदि आपके कुछ सिस्टम में कोई लोकेल समर्थन नहीं है, तो वे उस लोकेल (सी) के लिए डिफ़ॉल्ट होंगे, इसलिए आपको इसे उन पर सेट नहीं करना होगा। यदि आपके पास कुछ ऐसे हैं जो स्थानीय लोगों का समर्थन करते हैं और वही व्यवहार चाहते हैं, तो उन सिस्टम पर LC_ALL=C सेट करें। यह उतना ही सिस्टम होगा जितना मुझे पता है कि यह वैसे ही करता है।

यदि आपके पास कोई लोकेल-कम सिस्टम नहीं है, तो बस सुनिश्चित करें कि वे लोकेल साझा करते हैं, शायद पर्याप्त होगा।

अधिक जानकारी के लिए विहित की गई The एकल यूनिक्स ® विशिष्टता, संस्करण 2 locale, environment variables, setlocale() के विवरण और sort(1) उपयोगिता का वर्णन देखें।

+1

कोई लोकेल को एलसी_ALL = सी में कैसे सेट करता है? – Malcolm

+1

@ मैल्कम: कई अनुशंसाएं आपको एलसी_एएल वैरिएबल को निर्यात करने के लिए बताएंगी ... लेकिन यह उपयोगकर्ताओं को शैल सेटिंग्स को क्लॉबर्स करता है। मेरा उत्तर [यहां] देखें (http://stackoverflow.com/questions/6923464/unix-sort-ignores-whitespaces/17180962#17180962) इसे सेट स्कोप के लिए सेट करने के लिए – mateor

3

इस स्थान अंतर के कारण हो सकता है।

3

यह शायद locale environment variables की विभिन्न सेटिंग्स के कारण है। sort तारों की तुलना करने के तरीके को निर्धारित करने के लिए इन सेटिंग्स का उपयोग करेगा। sort पर कॉल करने से पहले इन पर्यावरण चर को सेट करके आप इसे एक विशिष्ट तरीके से व्यवहार करने के लिए मजबूर कर सकते हैं।

2

आप कभी भी sort के बारे में जानना चाहते हैं, Single Unix Specification v3 में specification of sort पढ़ें। यह

तुलना [...] वर्तमान लोकेल के कोटिंग अनुक्रम का उपयोग करके किया जाएगा।

आईओओ, कैसे sort प्रकार पर्यावरण की लोकेल (भाषा) सेटिंग्स पर निर्भर है जो स्क्रिप्ट चल रहा है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^