GNU/Linux ডিস্ট্রিবিউশনগুলো টেক্সট হ্যান্ডল করার জন্য প্রোগ্রামের একটি সমृদ্ধ সেট অন্তর্ভুক্ত করে, যadratি সবচেয়ে বেশি GNU core utilities দ্বারা প্রদত্ত। এখানে কিছু লার্নিং কার্ভ আছে, কিন্তু সঠিকভাবে ব্যবহার করলে এই ইউটিলিটিগুলো খুব উপযোগী এবং দক্ষ হতে পারে।
এখানে ১৩টি শক্তিশালী টেক্সট ম্যানিপুলেশন টুল যা প্রতিটি কমান্ড-লাইন ইউজারের জানা উচিত।
১. cat
Cat ডিজাইন করা হয়েছিল ফাইলগুলো catenate বা ক্যাটেনেট করার জন্য কিন্তু সবচেয়ে বেশি ব্যবহৃত হয় একটি সিঙ্গেল ফাইল ডিসপ্লে করার জন্য। কোনো আর্গুমেন্ট ছাড়া, cat স্ট্যান্ডার্ড ইনপুট পড়ে Ctrl + D চাপা পর্যন্ত (টার্মিনাল থেকে বা অন্য প্রোগ্রাম আউটপুট থেকে যদি পাইপ ব্যবহার করা হয়)। স্ট্যান্ডার্ড ইনপুট এক্সপ্লিসিটলি - দিয়ে সপ্লাই করা যেতে পারে।
Cat-এর কিছু উপযোগী অপশন রয়েছে, 주로:
-Aপ্রতিটি লাইনের শেষে "$" প্রিন্ট করে এবং নন-প্রিন্টিং ক্যারেক্টারগুলো ক্যারেট নোটেশন দিয়ে দেখায়।-nসকল লাইন নম্বর দেয়।-bনন-ব্ল্যাঙ্ক লাইনগুলো নম্বর দেয়।-sব্ল্যাঙ্ক লাইনের একটি সিরিজকে একটি সিঙ্গেল ব্ল্যাঙ্ক লাইনে রিডিউস করে।
নিচের উদাহরণে, আমরা file1, স্ট্যান্ডার্ড ইনপুট, এবং file3-এর কন্টেন্ট ক্যাটেনেট ও নম্বর দিয়ে দেখাচ্ছি।
cat -n file1 - file3
২. sort
নাম অনুযায়ী, sort ফাইল কন্টেন্টসকে অ্যালফাবেটিক্যালি এবং न्यूमেরিক্যালি সর্ট করে।
৩. uniq
Uniq একটি সর্টেড ফাইল নেয় এবং ডুপ্লিকেট লাইনগুলো রিমুভ করে। এটি প্রায়শই sort-এর সাথে চেইন করা হয় একটি সিঙ্গেল কমান্ডে।
৪. comm
Comm দুটি সর্টেড ফাইল তুলনা করতে ব্যবহৃত হয়, লাইন বাই লাইন। এটি তিন কলাম আউটপুট করে: প্রথম দুটি কলামে যথাক্রমে প্রথম এবং দ্বিতীয় ফাইলের ইউনিক লাইনগুলো থাকে, এবং তৃতীয় কলামে উভয় ফাইলে পাওয়া যাওয়া লাইনগুলো থাকে।
৫. cut
Cut নির্দিষ্ট সেকশন লাইন থেকে রিট্রিভ করতে ব্যবহৃত হয়, ক্যারেক্টার, ফিল্ড, বা বাইটস ভিত্তিক করে। এটি একটি ফাইল থেকে পড়তে পারে অথবা স্ট্যান্ডার্ড ইনপুট থেকে যদি কোনো ফাইল স্পেসিফাই না করা হয়।
ক্যারেক্টার পজিশন অনুযায়ী কাটা
-c অপশন একটি সিঙ্গেল ক্যারেক্টার পজিশন বা এক বা একাধিক ক্যারেক্টার রেঞ্জ স্পেসিফাই করে।
উদাহরণস্বরূপ:
-c 3: ৩রা ক্যারেক্টার।-c 3-5: ৩রা থেকে ৫ম ক্যারেক্টার।-c -5বা-c 1-5: ১ম থেকে ৫ম ক্যারেক্টার।-c 5-: ৫ম ক্যারেক্টার থেকে লাইনের শেষ পর্যন্ত।-c 3,5-7: ৩রা এবং ৫ম থেকে ৭ম ক্যারেক্টার।
ফিল্ড অনুযায়ী কাটা
ফিল্ডগুলো একটি ডিলিমিটার দিয়ে বিভক্ত থাকে যা একটি সিঙ্গেল ক্যারেক্টার, -d অপশনে স্পেসিফাই করা হয়। -f অপশন একটি ফিল্ড পজিশন বা এক বা একাধিক ফিল্ড রেঞ্জ সিলেক্ট করে উপরের মতো ফরম্যাটে।
৬. dos2unix
GNU/Linux এবং Unix সাধারণত টেক্সট লাইন টারমিনেট করে লাইন ফিড (LF) দিয়ে, যখন উইন্ডোজ ক্যারেজ রিটার্ন এবং লাইন ফিড (CRLF) ব্যবহার করে। CRLF টেক্সট লিনাক্সে হ্যান্ডল করার সময় কম্প্যাটিবিলিটি ইস্যু উদ্ভব করতে পারে, সেখানে dos2unix কাজে লাগে। এটি CRLF টারমিনেটরকে LF-এ কনভার্ট করে।
নিচের উদাহরণে, file কমান্ড ব্যবহার করা হয়েছে dos2unix ব্যবহার করার আগে এবং পরের টেক্সট ফরম্যাট চেক করতে।
৭. fold
লম্বা লাইনগুলো পড়া এবং হ্যান্ডল করা সহজ করতে, আপনি fold ব্যবহার করতে পারেন, যা লাইনগুলো একটি নির্দিষ্ট প্রস্থে র্যাপ করে।
Fold ডিফল্টলি নির্দিষ্ট প্রস্থকে কঠোরভাবে মেনে চলে, প্রয়োজনে শব্দ ভাঙে।
fold -w 30 longline.txt
শব্দ ভাঙা অনিচ্ছাকর হলে, আপনি -s অপশন ব্যবহার করতে পারেন স্পেসে ব্রেক করার জন্য।
fold -w 30 -s longline.txt
৮. iconv
এই টুলটি টেক্সটকে একটি এনকোডিং থেকে অন্য এনকোডিং-এ কনভার্ট করে, যা অসামান্য এনকোডিং নিয়ে কাজ করার সময় খুব উপযোগী।
iconv -f input_encoding -t output_encoding -o output_file input_file
- "input_encoding" হলো যে এনকোডিং থেকে কনভার্ট করা হচ্ছে।
- "output_encoding" হলো যে এনকোডিং-এ কনভার্ট করা হচ্ছে।
- "output_file" হলো ফাইলনেম যেখানে iconv সেভ করবে।
- "input_file" হলো ফাইলনেম যা iconv পড়বে।
নোট: উপলব্ধ এনকোডিংগুলো লিস্ট করতে iconv -l ব্যবহার করুন।
৯. sed
sed একটি শক্তিশালী এবং ফ্লেক্সিবল stream editor, সবচেয়ে সাধারণত স্ট্রিং খুঁজে বের করে রিপ্লেস করার জন্য ব্যবহার হয় নিচের সিনট্যাক্সে।
নিচের কমান্ডটি নির্দিষ্ট ফাইল থেকে পড়বে (অথবা স্ট্যান্ডার্ড ইনপুট), রেগুলার এক্সপ্রেশন প্যাটernel সাথে মিলে যাওয়া টেক্সটের অংশগুলো রিপ্লেসমেন্ট স্ট্রিং দিয়ে রিপ্লেস করবে এবং রেজাল্ট টার্মিনালে আউটপুট করবে।
sed s/pattern/replacement/g filename
মূল ফাইলটি মডিফাই করতে, আপনি -i ফ্ল্যাগ ব্যবহার করতে পারেন।
১০. wc
wc ইউটিলিটি একটি ফাইলের বাইট, ক্যারেক্টার, শব্দ, বা লাইনের সংখ্যা প্রিন্ট করে।
১১. split
আপনি split ব্যবহার করে একটি ফাইল ছোট ছোট ফাইলগুলোর ভাগ করতে পারেন, লাইনের সংখ্যা অনুযায়ী, সাইজ অনুযায়ী, বা একটি নির্দিষ্ট সংখ্যক ফাইলে।
লাইনের সংখ্যা অনুযায়ী ভাগ করা
split -l num_lines input_file output_prefix
বাইটস অনুযায়ী ভাগ করা
split -b bytes input_file output_prefix
নির্দিষ্ট সংখ্যক ফাইলে ভাগ করা
split -n num_files input_file output_prefix
১২. tac
Tac, যেটি cat-এর রিভার্স, ঠিক সেটি করে: এটি ফাইলগুলো রিভার্স অর্ডারে লাইনসহ ডিসপ্লে করে।
১৩. tr
tr টুলটি ক্যারেক্টার সেট ট্রান্সলেট বা ডিলিট করতে ব্যবহৃত হয়।
একটি ক্যারেক্টার সেট সাধারণত হয় একটি স্ট্রিং বা ক্যারেক্টার রেঞ্জ। উদাহরণস্বরূপ:
- "A-Z": সকল আপারকেস লেটার
- "a-z0-9": লোয়ারকেস লেটার এবং ডিজিট
- "\n[:punct:]": নিউলাইন এবং পাঙ্কচুয়েশন ক্যারেক্টার
আরো ডিটেইলসের জন্য tr ম্যানুয়াল পেজ রেফার করুন।
এক সেটকে অন্য সেটে ট্রান্সলেট করতে, নিচের সিনট্যাক্স ব্যবহার করুন:
tr SET1 SET2
উদাহরণস্বরূপ, লোয়ারকেস ক্যারেক্টারগুলো তাদের আপারকেস সমতুল্যে রিপ্লেস করতে, আপনি ব্যবহার করতে পারেন:
tr "a-z" "A-Z"
এক সেট ক্যারেক্টার ডিলিট করতে, -d ফ্ল্যাগ ব্যবহার করুন।
tr -d SET
এক সেট ক্যারেক্টারর কমপ্লিমেন্ট ডিলিট করতে (অর্থাৎ সেট ছাড়া সবকিছু), -dc ব্যবহার করুন।
tr -dc SET
উপসংহার
লিনাক্স কমান্ড লাইন শিখতে অনেক কিছু আছে। আশা করি উপরের কমান্ডগুলো আপনাকে কমান্ড লাইনে টেক্সট আরও ভালোভাবে ডিল করতে সাহায্য করবে।