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


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.