সংবেদনশীল অনুসারে জিএনইউ সাজান


35

sortউবুন্টু 10.04 (স্বচ্ছ) এ ইউটিলিটি সবসময় সাজানোর কেস-অবশ দ্বারা, ঠিক আপনাকে তা নির্দিষ্ট করে --ignore-caseএটি।

The two sort just give the same result: 

echo -e "c\nb\nB\na" | sort
echo -e "c\nb\nB\na" | sort --ignore-case

তবে কখনও কখনও আমি কেস-সংবেদনশীল অনুসারে বাছাই করতে চাই, তাই উপরের-অক্ষরের অক্ষরগুলি প্রথমে আসে, তারপরে ছোট-বড় অক্ষর। এটা কি সম্ভব?

উত্তর:


31

কোলেশন অর্ডার ওভাররাইড করুন।

echo -e "c\nb\nB\na" | LC_COLLATE=C sort

5
এটি কাজ করে, তবে সংজ্ঞা অনুসারে কেবল বিদেশী না হলে। খেলছে; তারা 7-বিট ASCII অক্ষরের পরে বাছাই করবে ; চেষ্টা echo $'B\nÄ\nb\na' | LC_COLLATE=C sort। না আসলে গনুহ যে করা উচিত sortএকটি অ সঙ্গে Cলোকেল সবসময় কাজগুলোও কেস-অবশ বাছাই একটি বিবেচনা করা যেতে বাগ ?
— mklement0

"বিদেশী চরিত্রগুলি" সম্পর্কিত, C.UTF-8লোকেল ( LC_COLLATE=C.UTF-8) কেস-সংবেদনশীলভাবে বাছাই করবে, যখন অ-এসসিআইটি ইউটিএফ -8 অক্ষরগুলিকে "স্বাভাবিকভাবে" চিকিত্সা করবে। দুর্ভাগ্যক্রমে, এটি গতিপথের উপরিভাগে উপলভ্য নয় এবং এটি কেবল দেবিয়ান, উবুন্টু এবং ডেরিভেটিভস দ্বারা প্যাচ করা হয়েছে।
— aplaice

13

মজার বিষয় হল, আরও একটি সাজানোর অর্ডার এখানে উপলভ্য:

echo -e "c\nb\nB\na" | LC_COLLATE=C sort --ignore-case

যা বড় হাতের অক্ষরটিকে তার সম্পর্কিত ছোট হাতের অক্ষরের আগে রাখে।

এখানে তাদের আউটপুটগুলির তুলনা (আমি "d" এবং "ডি" যুক্ত করেছি) en_US.UTF-8লোকালে (যেখানে ওভাররাইড করা ব্যতীত):

  1. echo -e "d\nD\nc\nb\nB\na" | sort
  2. echo -e "d\nD\nc\nb\nB\na" | sort --ignore-case
  3. echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort
  4. echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort --ignore-case

আউটপুট:

1   2   3   4
-   -   -   -
a   a   B   a
b   b   D   B
B   B   a   b
c   c   b   c
d   d   c   D
D   D   d   d

মজাদার; আমি গনুহ মধ্যে এই আচরণ দেখতে sort v5.93এবং (OS X এর 10.9.3 (সঙ্গে আসে!)) v8.13, কিন্তু না এ v8.21এবং v8.22। আমার ধারণা 2 এবং 4 এর ফলাফলগুলি এখনও সমতুল্য হিসাবে বিবেচিত হতে পারে (তবে এটি অবশ্যই বিদেশী চরিত্রগুলি যোগ করার সাথে পরিবর্তিত হবে)।
— mklement0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.