লিনাক্স সাজানোর ডিফল্ট অর্ডার কি?


18

দীর্ঘ সময় ধরে আমি ভেবেছিলাম sortপ্রোগ্রামটির ডিফল্ট আচরণ ASCII অর্ডারটি ব্যবহার করছে। যাইহোক, যখন আমি sortকোনও যুক্তি ছাড়াই নিম্নলিখিত লাইনগুলি ইনপুট করি :

#
@

আমি পেয়েছি:

@
#

তবে ASCII সারণী অনুসারে, #35 হয় এবং @64 হয় Another

A
a

এবং আউটপুটটি হ'ল:

a
A

কেউ কি এই ব্যাখ্যা করতে পারেন? যাইহোক, ব্যবহার করার সময় 'ডিকশনারি-অর্ডার' sort -dকী?


5
সাজানোর ক্রম আপনার স্থানীয় সেটিংসের উপর নির্ভর করে
জান্নেব

2
কমপক্ষে জিএনইউ সাজানোর ক্ষেত্রে এটি ডিফল্ট অনুসারে বর্ণানুক্রমিক ক্রম।
জার্নো

উত্তর:


17

দেখে মনে হচ্ছে আপনি কোনও পসিক্স লোকেল ব্যবহার করছেন।

চেষ্টা করুন:

export LC_ALL=C

এবং তারপর sort

info sort স্পষ্টভাবে বলেছেন:

(1) আপনি যদি কোনও পসিক্স লোকেল ব্যবহার করেন না (উদাহরণস্বরূপ, `এলসি_এলএল'কে` এন_ইউএস 'সেট করে), তবে' সাজান 'আউটপুট তৈরি করতে পারে যা আপনার অভ্যস্তের চেয়ে আলাদাভাবে সাজানো হয়েছে। সেক্ষেত্রে `LC_ALL 'পরিবেশের পরিবর্তনশীল` C' তে সেট করুন। মনে রাখবেন যে শুধুমাত্র `LC_COLLATE 'সেটিংসে দুটি সমস্যা রয়েছে। প্রথমত, যদি `LC_ALL 'সেট করা থাকে তবে এটি অকার্যকর। দ্বিতীয়ত, যদি `LC_CTYPE '(বা` LC_CTYPE' সেট না করা থাকে) `LC_CTYPE 'অসম্পূর্ণ মানতে সেট করা থাকে তবে এর অপরিবর্তিত আচরণ রয়েছে। উদাহরণস্বরূপ, যদি und LC_CTYPE 'ja_JP.PCK হয় তবে `LC_COLLATE' 'en_US.UTF-8' হয় তবে আপনি অপরিজ্ঞাত আচরণ পান।


3
ওপি জিজ্ঞাসা করছে যে কীভাবে এটি পরিবর্তন করা যায় তা নয়, সাজানোর ক্রম কী order

1
ধন্যবাদ, আমি আমার মেশিনে পরীক্ষা করেছি এবং লোকাল সেটিংস সাজানোর আচরণকে প্রভাবিত করে

3

সাজানোর ক্রম নির্ধারণ করতে, প্রতিটি লাইনে আলাদা অক্ষর সহ একটি ফাইল তৈরি করুন এবং এটি বাছাই করুন। ফলস্বরূপ আউটপুট আপনাকে সাজানোর ক্রমটি বলবে।


দুর্দান্ত, সহজ এবং দক্ষ

1
সাধারণত একটি খুব ভাল ধারণা, কিন্তু এটি সবসময় পর্যাপ্ত হয় না। একটি স্বাবলম্ব শুধুমাত্র ব্যক্তিগত অক্ষর উপর সংজ্ঞায়িত করা প্রয়োজন। কিছু কোলিশন "এই" কে এমনভাবে আচরণ করে যেন এটি লিগচার, বা লিগচারকে এমনভাবে আচরণ করে যেন সেগুলি পচে গেছে। অন্য কেসটি হ'ল অনেক জোট 'ক' এবং 'এ' কে সমান বলে বিবেচনা করে তবে পরীক্ষার মাধ্যমে আপনি যে ক্রমটি দেখেছেন তা আপনাকে তা বলে না (এটি আপনাকে বলতে পারে সাজানটি স্থিতিশীল কিনা)। এবং একটি একক-অক্ষর পরীক্ষা ট্যাব সম্প্রসারণ, সাদা স্থান স্বাভাবিককরণ ইত্যাদি কার্যকর হয় কিনা তা জানায় না। তবুও, এটি শুরু করার জন্য খুব ভাল জায়গা।
পাঠ্যদর্শন

1
(পূর্ববর্তী মন্তব্য সম্পাদনা করতে খুব দেরী) - যতক্ষণ আপনি প্রকৃতপক্ষে বিবিধ পর্যায়ে অক্ষর অন্তর্ভুক্ত করেন ততক্ষণ আপনি আবাবের পরিবর্তে এএবিবি দেখতে (যেমন উদাহরণস্বরূপ) কেব-উপেক্ষা করে বলতে পারবেন।
টেক্সটজিক

2

যেমনটি man sortবলা হয়েছে, "অভিধান-ক্রম" এর অর্থ "কেবল ফাঁকা এবং বর্ণচিহ্নগুলি বিবেচনা করুন"। উদাহরণস্বরূপ, ডেটা দেওয়া হয়েছে

The
!quick
brown
@fox
jumps
#over
17
$lazy
  dogs
%42
times.

অপরিবর্তিত sortকমান্ড উত্পাদন করে

  dogs
!quick
#over
$lazy
%42
@fox
17
brown
jumps
The
times.

(লাইন যে স্থান অক্ষর এবং দিয়ে শুরু নির্বাণ !, #, $, %, এবং @চিহ্ন 1 লাইন যে অক্ষর এবং সংখ্যার দিয়ে শুরু এগিয়ে; অর্থাত, আলফানিউমেরিক অক্ষর ), কিন্তু sort -dউত্পাদন করে

  dogs
17
%42
brown
@fox
jumps
$lazy
#over
!quick
The
times.

  dogsএখনও এটি প্রথম, কারণ এটি স্পেস দিয়ে শুরু হয়, তবে বিশেষ (বিরামচিহ্ন) অক্ষরগুলি এড়ানো হবে।  17সামনে আসে 42, এবং foxমধ্যে আসে brownএবং jumpsএটা সত্য যে সত্ত্বেও, 42এবং foxতাদের সামনে কিছু অক্ষর আছে যা স্বাভাবিকভাবে আগে তাদের সরাতে হবে আছে 17
____________
1 তাদের ASCII মান অনুসারে: স্থান = 040, != 041, #= 043, $= 044, %= 045, এবং @= 0100। মনে রাখবেন যে (স্পেস বারটিকে উপেক্ষা করে) এটি কিছু কিছু কীবোর্ডে বাম থেকে ডান দিকের অর্ডার approximately


1
আপনার প্রথম উদাহরণের ক্রম, যেখানে পাঠ্যকে প্রথম বিরামচিহ্নের ভিত্তিতে সাজানো হয়েছে, ফলস্বরূপ লোকালটি সি (এলসি_এলএল = সি হিসাবে যেমন) রয়েছে তবে অন্য লোকেলে না থাকলে ফলাফল হতে পারে। ডিফল্ট কোন লোকেলটি ওএস সেটিংসের উপর নির্ভর করে। সুতরাং, অনেক বিতরণে একটি অযৌক্তিকর sort আলাদা হওয়া উচিত।
ইসহাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.