لماذا لينكس النوع لا تعطي لي النتائج المرجوة؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

ولدي a.csv الملف مع محتويات مشابهة إلى أقل من

a,b,c
a  ,aa,  a
a b, c, f
a , b, c
a b a b a,a,a
a,a,a
a aa ,a , t

وأنا أحاول أن ترتيب هذا الامر باستخدام sort -k1 -t, a.csv ولكنه يعطي النتائج التالية

a,a,a
a  ,aa,  a
a aa ,a , t
a b a b a,a,a
a , b, c
a,b,c
a b, c, f

والذي هو ليس من النوع الفعلي على 1st العمود. ما أفعل الخطأ؟

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

المحلول

لديك لتحديد الموقف النهائي لتكون 1، وأيضا:

sort -k1,1 -t, a.csv

نصائح أخرى

وتعطي هذه المحاولة: sort -t, -k1,1 a.csv

والرجل تشير إلى أن إهمال الحقل نهاية، فإنه سيتم فرز على كافة الأحرف ابتداء من الساعة n الحقل حتى نهاية السطر:

-k POS1[,POS2]'
     The recommended, POSIX, option for specifying a sort field.  The
     field consists of the part of the line between POS1 and POS2 (or
     the end of the line, if POS2 is omitted), _inclusive_.  Fields and
     character positions are numbered starting with 1.  So to sort on
     the second field, you'd use `-k 2,2' See below for more examples.

وجرب هذا بدلا من ذلك:

sort -k 1,1 -t , a.csv

ونوع يقرأ -k 1 بأنه "نوع من الحقل الأول فصاعدا." - هكذا تتحدى بشكل فعال وجهة تمرير حجة في المقام الأول

وهذا هو موثقة في وحذر في قسم الأمثلة على ذلك:

<اقتباس فقرة>   

ترتيب عدديا على الحقل الثاني   وحل العلاقات عن طريق الفرز   أبجديا يومي الثالث والرابع   شخصيات الميدانية الخمسة. استخدام `: 'كما   محدد الحقل:

     

و$ sort -t : -k 2,2n -k 5.3,5.4

     

لاحظ أنه إذا كان قد كتب -k 2 بدلا   من -k 2,2، فإن sort استخدمت جميع   الأحرف التي تبدأ في الثانية   الميدان، وتمتد إلى نهاية   السطر مثل المفتاح الأساسي الرقمية. إلى عن على   الغالبية العظمى من التطبيقات،   علاج مفاتيح تمتد لأكثر من واحد   سوف الميدان ورقمية لا تفعل ما   تتوقع.

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