سؤال

عندما أحاول فرز الملف النصي التالي "إدخال":

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 = ج يجب أن تساعد

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