শেল স্ক্রিপ্টে আমার এই কোডটি রয়েছে:
sort input | uniq -c | sort -nr > output
ইনপুট ফাইলে কোনও পূর্ববর্তী সাদা স্পেস ছিল না, তবে আউটপুট থাকে। আমি কিভাবে এটা ঠিক করব? এই বাশ আছে
শেল স্ক্রিপ্টে আমার এই কোডটি রয়েছে:
sort input | uniq -c | sort -nr > output
ইনপুট ফাইলে কোনও পূর্ববর্তী সাদা স্পেস ছিল না, তবে আউটপুট থাকে। আমি কিভাবে এটা ঠিক করব? এই বাশ আছে
উত্তর:
ইউনিকের ডিফল্ট আচরণ হ'ল 7 স্পেস প্রশস্ত একটি লাইনের ফ্রিকোয়েন্সিটিকে ন্যায়সঙ্গত করা, তারপরে একটি একক স্পেসের সাহায্যে আইটেম থেকে ফ্রিকোয়েন্সি আলাদা করুন।
সূত্র: https://www.tinnuxrain.com/articles/tweaking-uniq-c
সেড সহ নেতৃস্থানীয় স্থানগুলি সরান:
$ sort input | uniq -c | sort -nr | sed 's/^\s*//' > output
perl -pe 's/ *(\d+) /$1\t/'
( এখানে কিছু বিকল্প )। ক্লিপবোর্ডে পাইপ xclip -selection c
সরাসরি স্প্রেডশীটে পেস্ট করতে।
FWIW আপনি আরও নমনীয়তার জন্য একটি পৃথক বাছাইয়ের সরঞ্জাম ব্যবহার করতে পারেন। পাইথন এমন একটি হাতিয়ার।
#!/usr/bin/python3
import sys, operator, collections
counter = collections.Counter(map(operator.methodcaller('rstrip', '\n'), sys.stdin))
for item, count in counter.most_common():
print(count, item)
তাত্ত্বিকভাবে এটি sort
বৃহত ইনপুটগুলির সরঞ্জামের চেয়ে আরও দ্রুত হবে কারণ উপরের প্রোগ্রামটি বাছাই করা তালিকার পরিবর্তে ডুপ্লিকেট লাইন সনাক্ত করতে হ্যাশ টেবিল ব্যবহার করে। (হায় এটি এটিকে প্রাকৃতিক শৃঙ্খলার পরিবর্তে স্বেচ্ছাসেবী হিসাবে গণনার রেখাগুলি স্থাপন করে; এটি সংশোধন করা যেতে পারে এবং এখনও দুটি sort
অনুরোধের চেয়ে দ্রুত হতে পারে ))
আপনি আউটপুট ফরম্যাট আরো নমনীয়তা চান আপনি মধ্যে সন্ধান করতে পারেন print()
এবং format()
বিল্ট-ইন ফাংশন।
উদাহরণস্বরূপ, আপনি যদি আটটি শীর্ষে জিরো দিয়ে অষ্টালে গণনা নম্বর মুদ্রণ করতে চান এবং একটি এনএলআর লাইন টার্মিনেটর সহ একটি স্পেস অক্ষরের পরিবর্তে একটি ট্যাব অনুসরণ করেন তবে এর সাথে শেষ লাইনটি প্রতিস্থাপন করুন:
print(format(count, '08o'), item, sep='\t', end='\0')
স্ক্রিপ্টটি কোনও ফাইলে সংরক্ষণ করুন, বলুন sort_count.py
এবং পাইথনের সাহায্যে এটি আহ্বান করুন:
python3 sort_count.py < input
uniq -c -i | tr -s ' ' | cut -c 2-
নেতৃস্থানীয় হোয়াইটস্পেসগুলি টিআর-সি-র সাথে একক শ্বেত স্পেসে অনুবাদ করুন এবং তারপরে কাটা-সি দিয়ে দ্বিতীয় অক্ষর থেকে আউটপুট মুদ্রণ করুন।