لماذا لينكس النوع لا تعطي لي النتائج المرجوة؟
سؤال
ولدي 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
استخدمت جميع
الأحرف التي تبدأ في الثانية
الميدان، وتمتد إلى نهاية
السطر مثل م> المفتاح الأساسي الرقمية. إلى عن على
الغالبية العظمى من التطبيقات،
علاج مفاتيح تمتد لأكثر من واحد
سوف الميدان ورقمية لا تفعل ما
تتوقع.