نتيجة غير متوقعة من نوع GNU
سؤال
عندما أحاول فرز الملف النصي التالي "إدخال":
test1 3
test3 2
test 4
مع الأمر
sort input
الإخراج هو بالضبط المدخلات. هنا هو إخراج
od -bc input
:
0000000 164 145 163 164 061 011 063 012 164 145 163 164 063 011 062 012
t e s t 1 \t 3 \n t e s t 3 \t 2 \n
0000020 164 145 163 164 011 064 012
t e s t \t 4 \n
0000027
إنه مجرد ملف مفصل لعلامة تبويب مع عمودين. عندما أفعل
sort -k 2
يتغير الإخراج إلى
test3 2
test1 3
test 4
وهو ما أتوقعه. ولكن إذا فعلت
sort -k 1
لا شيء يتغير فيما يتعلق بالمدخلات ، في حين أتوقع أن يتم فرز "الاختبار" قبل "Test1". أخيرًا ، إذا فعلت
cat input | cut -f 1 | sort
انا حصلت
test
test1
test3
كما هو متوقع. هل هناك تفسير منطقي لهذا؟ ما من المفترض أن يفعله النوع بالضبط افتراضيًا ، شيء مثل:
sort -k 1
?
روايتي من النوع:
sort (GNU coreutils) 7.4
لا يوجد حل صحيح
نصائح أخرى
من صفحات الرجل:
* تحذير * تؤثر اللغة المحددة بواسطة البيئة على ترتيب الفرز. اضبط LC_ALL = C للحصول على ترتيب الفرز التقليدي الذي يستخدم قيم البايت الأصلية.
هكذا يبدو التصدير lc_all = ج يجب أن تساعد
لا تنتمي إلى StackOverflow