আমি একটি বিশাল 4-কলামের ফাইলের মুখোমুখি। আমি এর তৃতীয় কলামের উপর ভিত্তি করে সাজানো ফাইলটি স্টডআউটে প্রদর্শন করতে চাই:
cat myFile | sort -u -k3
কৌতুক সম্পাদন করা কি যথেষ্ট?
sort -u -k3 myFile
, এমনকি
আমি একটি বিশাল 4-কলামের ফাইলের মুখোমুখি। আমি এর তৃতীয় কলামের উপর ভিত্তি করে সাজানো ফাইলটি স্টডআউটে প্রদর্শন করতে চাই:
cat myFile | sort -u -k3
কৌতুক সম্পাদন করা কি যথেষ্ট?
sort -u -k3 myFile
, এমনকি
উত্তর:
sort -k 3,3 myFile
বর্তমান লোকেলের দ্বারা সংজ্ঞায়িত ক্রম অনুসারে কলামগুলি ফাঁকা (ASCII SPC এবং TAB অক্ষরগুলিতে POSIX / C লোকালে) দ্বারা পৃথক করা হয়েছে ধরে ধরে 3 ডি কলাম অনুসারে বাছাই করা ফাইলটি প্রদর্শিত হবে ।
নোট করুন যে শীর্ষস্থানীয় ফাঁকা স্থানগুলি কলামে অন্তর্ভুক্ত করা হয়েছে (ডিফল্ট বিভাজকটি একটি শূন্যস্থান থেকে ফাঁকাতে স্থানান্তর), এটি লোকালগুলিতে পার্থক্য করতে পারে যেখানে তুলনার উদ্দেশ্যে স্পেসগুলি উপেক্ষা করা হয় না, উপেক্ষা করার -b
বিকল্পটি ব্যবহার করুন নেতৃস্থানীয় ফাঁকা
মনে রাখবেন এটি শেল থেকে সম্পূর্ণ স্বতন্ত্র (সমস্ত শেলগুলি সেই কমান্ড লাইনের সমানভাবে পার্স করবে, শেলগুলি সাধারণত sort
কমান্ডটি অন্তর্নির্মিত থাকে না)।
-k 3
3 তম কলাম (অগ্রণী ফাঁকাগুলি সহ) দিয়ে শুরু হওয়া লাইনের অংশটি বাছাই করা । সি লোকালে, যেহেতু স্থান এবং ট্যাব অক্ষরগুলি সমস্ত মুদ্রণযোগ্য অক্ষরের আগে থাকে, যা আপনাকে সাধারণত একই ফল দেয় -k 3,3
(একইরকম তৃতীয় ক্ষেত্রের রেখাগুলি বাদ দিয়ে),
-u
হ'ল লাইনগুলির মধ্যে একটিকে ধরে রাখতে হবে যদি সেখানে একই ধরণের একাধিক ধরণের উপস্থিত থাকে (সেক্ষেত্রে সারণি কীটি একই রকম হয় (এটি সমান হওয়ার মতো প্রয়োজনীয় নয় তবে ))।
cat
বিড়াল enate কমান্ড হ'ল। আপনার এখানে দরকার নেই।
যদি কলামগুলি অন্য কিছুর দ্বারা পৃথক করা হয়, আপনার -t
বিভাজক নির্দিষ্ট করার জন্য বিকল্পের প্রয়োজন need
উদাহরণস্বরূপ ফাইল a
$ cat a
a c c c
a b ca d
a b c e
a b c d
সাথে -u -k 3
:
$ echo $LANG
en_GB.UTF-8
$ sort -u -k 3 a
a b ca d
a c c c
a b c d
a b c e
লাইন 2 এবং 3 এর একই তৃতীয় কলাম রয়েছে, তবে এখানে বাছাই কীটি তৃতীয় কলাম থেকে রেখার শেষ পর্যন্ত, সুতরাং -u
উভয়ই ধরে রাখে। ␠ca␠d
এর আগে বাছাই করে ␠c␠c
কারণ আমার লোকালে প্রথম পাসে স্পেসগুলি উপেক্ষা করা হয়, এর cad
আগে বাছাই করে cc
।
$ sort -u -k 3,3 a
a b c d
a b c e
a b ca d
উপরে কেবল তৃতীয় কলামটি তাদের জন্য রক্ষণাবেক্ষণ করা হবে ␠c
। ␠␠c
(2 শীর্ষস্থানীয় স্থান) সহ একটি কীভাবে বজায় রাখা আছে তা দ্রষ্টব্য ।
$ sort -k 3 a
a b ca d
a c c c
a b c d
a b c e
$ sort -k 3,3 a
a b c d
a c c c
a b c e
a b ca d
দেখ, আমি কেমন ক্রম a b c d
এবং a c c c
বিপরীত হয়। প্রথম ক্ষেত্রে, কারণ ␠c␠c
সামনে প্রকারের ␠c␠d
, দ্বিতীয় ক্ষেত্রে কারণ সাজানোর কী একই (হয় ␠c
), শেষ অবলম্বন তুলনা যে পুরো রাখে মধ্যে লাইন তুলনা a b c d
সামনে a c c c
।
$ sort -b -k 3,3 a
a b c d
a b c e
a c c c
a b ca d
একবার আমরা ফাঁকা স্থানগুলি উপেক্ষা করার পরে, প্রথম 3 লাইনের জন্য বাছাই কী একই ( c
) হয়, তাই এগুলি শেষ রিসর্ট তুলনা অনুসারে বাছাই করা হয়।
$ LC_ALL=C sort -k 3 a
a b c e
a c c c
a b c d
a b ca d
$ LC_ALL=C sort -k 3,3 a
a b c e
a b c d
a c c c
a b ca d
সি লোকেল সালে ␠␠c
সামনে প্রকারের ␠c
শুধুমাত্র একটি পাস আছে যেমন যেখানে অক্ষর (তারপর একক বাইটস) সাজানোর তাদের কোড বিন্দু মান (যেখানে স্থান কম কোড বিন্দু আছে উপর ভিত্তি করে c
)।
blank
হয়েছে যা লোকেলের উপর নির্ভর করে স্থান এবং ট্যাব ছাড়াও অন্যান্য অক্ষরকে অন্তর্ভুক্ত করতে পারে।
3,3
পারেন? শুধু কেন নয় 3
?
যদি আপনি "কলাম" টেক্সট ফাইলে (চতুর্থ চরিত্র) হিসাবে বুঝতে পারেন তবে হ্যাঁ, আপনার সমাধানটি কাজ করা উচিত (বা এমনকি এলোমেলো অ্যাক্সেসের সাথে কিছু মেমরি-সাশ্রয়কারী যাদুবিদ্যার sort -u -k3 myFile
অনুমতি দেওয়ার sort
জন্য)। আপনি যদি ডাটাবেসের মতো "কলাম" বুঝতে পারছেন - সম্পূর্ণ পৃথক পৃথক পৃথক পৃথক ডেটা এবং একটি পরিবর্তনক কলাম প্রস্থ, আপনার কিছু ফ্যানসিয়ার প্রয়োজন যেমন এই আকার অনুসারে ls -l
ls -l |awk '{print $5 " " $0;}'| sort -n | cut -d " " -f 2-
(যা তুচ্ছ সমতুল্য ls -lS
তবে উদাহরণটি সুন্দরভাবে পরিবেশন করে))
sort -k 1.3,1.3
। ls -l | sort -k5,5n
আকার অনুসারে বাছাই করা।
awk
সমাধান ঠিক কি আমি সহজে জটিল শ্রেণীবিভাজন প্রয়োজনীয়তা মানানসই করার জন্য সংশোধন needed-- হয়
sort -g -k column_number
নির্দিষ্ট কলাম ব্যবহার করে সংখ্যাসূচক অক্ষরযুক্ত যে কোনও তালিকাকে সাজানোর জন্য ডান কমান্ড
আপনি awk Velor গ্রন্থাগারটি ব্যবহার করতে পারেন :
#!/usr/local/bin/velour -f
{
q[NR] = $3
z[NR] = $0
}
END {
a_sort_by(q, z)
io_puts(q)
}
$ sort -k 1.3,1.3 myfile
আপনার মাইফাইল ফাইলটি তৃতীয় কলামে বাছাই করবে যদি আপনার ফাইলে কোনও বিভাজক না থাকে।
$ cat myfile
ax5aa
aa3ya
fg7ds
pp0dd
aa1bb
$ sort -k 1.3,1.3 myfile
pp0dd
aa1bb
aa3ya
ax5aa
fg7ds
সাজানোর ম্যান পৃষ্ঠা:
[...] -কি, --কি = পোস 1 [, পস 2] পস 1 এ একটি কী শুরু করুন (উত্স 1), এটি পস 2 এ শেষ করুন (লাইনের ডিফল্ট প্রান্ত) [...] পস এফ [.সি] [ ওপিটিএস], যেখানে এফ ক্ষেত্রের নম্বর এবং সি ক্ষেত্রের চরিত্রের অবস্থান; উভয়টির উৎপত্তি ১। যদি না -t বা -b কার্যকর না হয় তবে কোনও ক্ষেত্রের অক্ষর পূর্ববর্তী শ্বেত স্থানের শুরু থেকেই গণনা করা হয়। ওপিটিএস হ'ল এক বা একাধিক একক-চিঠি ক্রম বিকল্প, যা সেই কীটির জন্য গ্লোবাল অর্ডারিং বিকল্পগুলি ওভাররাইড করে। যদি কোনও কী দেওয়া না হয় তবে পুরো লাইনটি কী হিসাবে ব্যবহার করুন।
--Key = 1.3,1.3 দিয়ে, আপনি বলেছিলেন যে কেবলমাত্র একটি ক্ষেত্র (সম্পূর্ণ লাইন) এবং আপনি এই ক্ষেত্রের তৃতীয় অক্ষরের অবস্থানের তুলনা করছেন।
sort -u -k3 < myFile
।