Sed (Stream Editor) ব্যবহার করার সময় কিছু সাধারণ ভুল হতে পারে, যা প্রোগ্রামিং বা স্ক্রিপ্টিং এর ক্ষেত্রে কমন সমস্যা। এই ভুলগুলি প্রায়ই কমান্ডের সিনট্যাক্স, অপশন অথবা রেগুলার এক্সপ্রেশন ব্যবহার করার কারণে ঘটে থাকে। এখানে কিছু সাধারণ Sed ব্যবহারকারী ভুল এবং তাদের সমাধান দেওয়া হলো:
1. -i অপশন ব্যবহার করার সময় ব্যাকআপ ফাইল না তৈরি করা
যখন -i অপশন ব্যবহার করা হয় (যা ইনপ্লেস পরিবর্তন করে), অনেক ব্যবহারকারী ভুল করে এটি ব্যাকআপ ফাইল ছাড়া ব্যবহার করেন, যা কখনো কখনো দরকারী ডেটা হারানোর কারণ হতে পারে।
ভুল:
sed -i 's/old_word/new_word/g' file.txtএটি সরাসরি file.txt ফাইলের মধ্যে পরিবর্তন করবে এবং ব্যাকআপ ফাইল তৈরি করবে না। যদি কোনো ভুল হয় এবং আপনি আগের অবস্থায় ফিরে যেতে চান, তাহলে ফাইলের পুরনো সংস্করণ পাওয়া যাবে না।
সংশোধন:
sed -i.bak 's/old_word/new_word/g' file.txtএটি file.txt ফাইলের একটি ব্যাকআপ তৈরি করবে যার নাম হবে **file.txt.bak**। এরপর, মূল ফাইলটি পরিবর্তন করা হবে, এবং আপনি ব্যাকআপ ফাইলটি ব্যবহার করতে পারবেন যদি প্রয়োজন হয়।
2. সঠিকভাবে s/// কমান্ড ব্যবহার না করা
s/// (substitution) কমান্ড ব্যবহারের সময় অনেক ব্যবহারকারী ভুল করে এটির মধ্যে সঠিকভাবে স্ল্যাশ (/) ব্যবহার করেন না।
ভুল:
sed 's/old_word new_word/g' file.txtএটি sed কমান্ডের সঠিক সিনট্যাক্স নয়, কারণ স্ল্যাশের পর পর দুটি শব্দ যুক্ত করা হয় যা সঠিকভাবে কাজ করবে না।
সংশোধন:
sed 's/old_word/new_word/g' file.txtএটি সঠিকভাবে old_word শব্দটি new_word দিয়ে প্রতিস্থাপন করবে।
3. রেগুলার এক্সপ্রেশন সঠিকভাবে না লেখা
Sed এ রেগুলার এক্সপ্রেশন ব্যবহার করার সময় অনেক ব্যবহারকারী ভুল করে কিছু বিশেষ চরিত্র যেমন ., *, [] ইত্যাদি ভুলভাবে ব্যবহার করেন।
ভুল:
sed 's/cat*/dog/g' file.txtএটি একটি ভুল রেগুলার এক্সপ্রেশন। এখানে cat* অর্থ হচ্ছে, "cat" এর পরে শূন্য বা একাধিক "t" থাকার জন্য, কিন্তু এটি আসলে একাধিক "t" সঠিকভাবে মেলাতে সক্ষম নয়।
সংশোধন:
sed 's/cat*/dog/g' file.txtএখানে cat* আসলে cat বা তার পরে যেকোনো সংখ্যা t এর সমন্বয়ে মিলানোর জন্য ব্যবহৃত হতে পারে। সঠিক নিয়মে প্রয়োগ করা হবে।
4. -n অপশন ভুলভাবে ব্যবহার করা
-n অপশন ব্যবহার করলে Sed আউটপুট প্রদর্শন করা বন্ধ করে এবং p কমান্ড ব্যবহারের মাধ্যমে শুধুমাত্র নির্দিষ্ট প্যাটার্ন মেলা লাইনগুলি দেখাতে হবে। তবে, অনেক ব্যবহারকারী ভুলভাবে -n ব্যবহার করে আউটপুট দেখতে চান, কিন্তু p কমান্ড ছাড়া শুধু -n দেওয়া হলে কিছুই প্রদর্শিত হয় না।
ভুল:
sed -n 's/old_word/new_word/g' file.txtএটি আউটপুট দেখাবে না কারণ -n অপশনটি শুধুমাত্র সেই লাইনগুলোর আউটপুট দেখাবে যেগুলি p কমান্ড দ্বারা মেলা।
সংশোধন:
sed -n 's/old_word/new_word/gp' file.txtএখানে p কমান্ডের মাধ্যমে Sed কেবল সেই লাইনগুলো প্রদর্শন করবে যেগুলির মধ্যে পরিবর্তন হবে।
5. ব্যাকস্ল্যাশ (\) ভুল ব্যবহার করা
Sed কমান্ডে কিছু বিশেষ চরিত্র যেমন ., *, $, [ ইত্যাদি ব্যবহারের জন্য ব্যাকস্ল্যাশ (\) ব্যবহার করা দরকার। অনেক সময় ব্যবহারকারী ভুলভাবে এটি প্রয়োগ করেন।
ভুল:
sed 's/[a-zA-Z]/X/g' file.txtএটি ভুল হতে পারে যদি আপনার উদ্দেশ্য ছিল "একটি একক অক্ষরের পরিবর্তে X"। এই কমান্ডটি একটি অক্ষরের সঠিক মিলের জন্য ব্যবহার হচ্ছে, কিন্তু একটি সঠিক ব্যবহারকারী নির্দিষ্ট আর্গুমেন্ট অনুযায়ী নিয়মিত ফরম্যাট ছাড়া ভুল নির্দেশ দিতে পারে।
সংশোধন:
sed 's/\([a-zA-Z]\)/X/g' file.txtএটি একটি একক অক্ষরের [a-zA-Z] পরিবর্তে X প্রতিস্থাপন করবে।
6. -e কমান্ডের ভুল ব্যবহার
যখন একাধিক sed কমান্ড ব্যবহার করা হয়, অনেক ব্যবহারকারী -e অপশন ভুলভাবে প্রয়োগ করেন।
ভুল:
sed 's/old_word/new_word/g' 's/another_word/replacement_word/g' file.txtএটি ভুল কমান্ড, কারণ এখানে দুটি কমান্ড -e অপশন ছাড়া একত্রে দেয়া হয়েছে।
সংশোধন:
sed -e 's/old_word/new_word/g' -e 's/another_word/replacement_word/g' file.txtএটি দুটি Sed কমান্ডকে একসাথে প্রয়োগ করবে এবং প্রথমে "old_word" কে "new_word"-এ প্রতিস্থাপন করবে এবং পরে "another_word"-কে "replacement_word"-এ প্রতিস্থাপন করবে।
7. ইনপুট ও আউটপুট ফাইলের ভুল ব্যবহার
Sed এর মাধ্যমে আপনি একটি ইনপুট ফাইল থেকে তথ্য পড়েন এবং আউটপুট তৈরি করেন। অনেক সময় ব্যবহারকারীরা ইনপুট এবং আউটপুট ফাইল একই নাম দিয়ে ব্যবহার করেন, যার ফলে মূল ফাইলটি মুছে যায়।
ভুল:
sed 's/old_word/new_word/g' file.txt > file.txtএটি আউটপুট ফাইল file.txt এ লেখা শুরু করলে, মূল ফাইলের ডেটা সঠিকভাবে সংরক্ষিত হবে না এবং এটি ফাইল কনটেন্ট মুছে ফেলতে পারে।
সংশোধন:
sed 's/old_word/new_word/g' file.txt > temp.txt && mv temp.txt file.txtএটি প্রথমে temp.txt ফাইলে আউটপুট লিখে, তারপর মূল file.txt ফাইলকে নতুনভাবে প্রতিস্থাপন করবে।
সারাংশ
Sed ব্যবহার করার সময় সাধারণ ভুলগুলির মধ্যে সঠিক সিনট্যাক্স না ব্যবহার, অপশন ভুল প্রয়োগ এবং রেগুলার এক্সপ্রেশন ভুল লেখা অন্তর্ভুক্ত। উপরোক্ত সমস্যাগুলির সমাধান প্রস্তাবিত কমান্ডের মাধ্যমে করা হয়েছে, যা আপনাকে আরো দক্ষভাবে Sed কমান্ড ব্যবহার করতে সহায়তা করবে।
Read more