لماذا لا يتم ترتيب **الفرز** بنفس الطريقة على كل جهاز؟

StackOverflow https://stackoverflow.com/questions/28881

  •  09-06-2019
  •  | 
  •  

سؤال

باستخدام نفس نوع يؤدي الأمر بنفس الإدخال إلى نتائج مختلفة على أجهزة مختلفة.كيف يمكنني إصلاح ذلك؟

هل كانت مفيدة؟

المحلول

ال صفحة الرجل على OS X يقول:

******* تحذير ******* تؤثر اللغة المحددة بواسطة البيئة على ترتيب الفرز.اضبط LC_ALL = C للحصول على ترتيب الفرز التقليدي الذي يستخدم قيم البايت الأصلية.

مما قد يفسر الأمور.

إذا لم يكن لدى بعض أنظمتك دعم للغة، فستكون الإعدادات الافتراضية هي تلك اللغة (C)، لذلك لن تضطر إلى تعيينها عليها.إذا كان لديك بعض اللغات التي تدعم اللغات وتريد نفس السلوك، فقم بتعيينها LC_ALL=C على تلك الأنظمة.ستكون هذه هي الطريقة لجعل أكبر عدد من الأنظمة التي أعرفها تفعل ذلك بنفس الطريقة.

إذا لم يكن لديك أي أنظمة ذات لغة أقل، فمن المحتمل أن يكون مجرد التأكد من أنها تشارك اللغة المحلية كافيًا.

لمزيد من المعلومات الأساسية، راجع مواصفات Single UNIX ®، الإصدار 2 من لغة, متغيرات البيئة, تعيين اللغة () ووصف فرز(1) جدوى.

نصائح أخرى

يمكن أن يكون هذا نتيجة للاختلافات المحلية:

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


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

يجب أن يؤدي تعيين متغير البيئة LC_ALL إلى نفس القيمة إلى تصحيح المشكلة.

من المحتمل أن يكون هذا بسبب الإعدادات المختلفة للملف متغيرات البيئة المحلية. sort سيستخدم هذه الإعدادات لتحديد كيفية مقارنة السلاسل.من خلال تعيين متغيرات البيئة هذه بالطريقة التي تريدها قبل الاتصال sort, ، يجب أن تكون قادرًا على إجباره على التصرف بطريقة واحدة محددة.

لأكثر مما كنت تريد أن تعرف عنه sort, ، إقرأ ال مواصفات sort في ال مواصفات يونكس واحدة v3.فإنه ينص

يجب إجراء المقارنات [...] باستخدام تسلسل الترتيب للإعدادات المحلية الحالية.

ايوا كيف sort تعتمد عملية الفرز على الإعدادات المحلية (اللغة) للبيئة التي يعمل البرنامج النصي ضمنها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top