সেড ব্যবহার করে কোনও ফাইল থেকে নির্দিষ্ট লাইনগুলি কীভাবে মুছবেন

কখনও কখনও আমাদের এক বা একাধিক ফাইল থেকে একটি নির্দিষ্ট লাইন মুছে ফেলার প্রয়োজন হয়। উদাহরণস্বরূপ, আমার কাছে ফাইলগুলির একটি সম্পূর্ণ তালিকা আছে এবং আমাকে সেগুলির সবকটি থেকে ২৭ নম্বর লাইনটি মুছে ফেলতে হবে (লাইন #২৭ হলো একটি ACL, নিয়ম বা কনফিগারেশন)। আমি হয় ফাইলগুলি এক এক করে সম্পাদনা করতে পারি অথবা sed কমান্ড এবং একটি ব্যাশ স্ক্রিপ্ট (ঐচ্ছিক) ব্যবহার করে সহজেই আমার প্রয়োজনীয় কাজটি করতে পারি।

তবে, আসুন একক ফাইল কিছুটা সহজ চেষ্টা করে দেখি।

আমাদের কাছে distros-deb.txt ফাইলটি আছে , যাতে নিম্নলিখিত বিষয়গুলো রয়েছে:

ডেবিয়ান

কুবুন্টু

archlinux

দ্রাবক

পুদিনা

অন্য কথায়, distros-deb.txt ফাইলটিতে আমরা ডেবিয়ান-ভিত্তিক ডিস্ট্রিবিউশনগুলোর তালিকা করব, কিন্তু আমরা দেখতে পাচ্ছি যে ৩ নম্বর লাইনে "archlinux" লেখা আছে, যা স্পষ্টতই ডেবিয়ানের সাথে সম্পর্কিত নয়, তাই আমাদের ওই লাইনটি মুছে ফেলতে হবে। ফাইলটি থেকে ৩ নম্বর লাইনটি মুছে ফেলার জন্য, আমরা নিম্নলিখিত কোডটি যোগ করব:

sed "3d" distros-deb.txt > distros-deb-ok.txt

এই লাইনটি ব্যাখ্যা করা সহজ: `sed "3d"` দিয়ে আমরা নির্দেশ করছি যে আমরা ৩ নম্বর লাইনটি মুছে ফেলব, আর `distros-deb.txt` দিয়ে আমরা বলছি কোন ফাইলটির উপর কাজ করতে হবে, অর্থাৎ এই ফাইলটি থেকে ৩ নম্বর লাইনটি মুছে ফেলতে হবে। এই পর্যন্ত, যদি আমরা `<kbd>Enter</kbd>` চাপি, তাহলে এটি আমাদের কাঙ্ক্ষিত ফলাফলটি টার্মিনালে দেখাবে, তাই `> distros-deb-ok.txt` দিয়ে আমরা নির্দেশ করছি যে ফলাফলটি টার্মিনালে দেখানোর পরিবর্তে, এটি যেন এই নামের একটি ফাইলে রাখে।

কি সহজ?

আমরা sed প্যারামিটার , অর্থাৎ -i প্যারামিটার ব্যবহার করে > distros-deb-ok.txt ব্যবহার করাও এড়াতে পারি।

অন্য কথায়, যদি আমরা ফাইল থেকে লাইনটি মুছে ফেলতে এবং এটিকে একই নামে (অন্য কোনো ফাইলে নয়) সংরক্ষণ করতে চাই, তাহলে আমাদের কেবল -i প্যারামিটারটি যোগ করতে হবে :

sed -i "3d" distros-deb.txt

এটি distros-deb.txt থেকে # 3 লাইনটি সরিয়ে এটি সংরক্ষণ করবে।

আমি যদি লাইনগুলির একটি পরিসীমা চাই, তবে এটি লাইন # 3 অপসারণ করতে হবে তবে # 4 এবং # 5? এটি অর্জনের জন্য আমরা 3 থেকে 5 পর্যন্ত ব্যাপ্তি রেখেছি:

sed -i "3,5d" distros-deb.txt

এবং এটি আমাকে শুধুমাত্র ডেবিয়ান এবং কুবুন্টু দেখাবে 

সুতরাং যদি আমি লাইন 2 থেকে শেষেরটি মুছতে চাই, যখন আমি মোট লাইনগুলি জানি না?

কেবল ডলার প্রতীক - »use ব্যবহার করুন $

sed -i "2,$d" distros-deb.txt

আপনি যদি প্রথম লাইন থেকে # 4 এ মুছে ফেলতে চান তবে আমরা শুরুতে কেবল মানটি 1 রেখে দেব:

sed -i "1,4d" distros-deb.txt

মোটামুটি এইটুকুই, কাজ স্বয়ংক্রিয় করার জন্য ব্যাশ স্ক্রিপ্ট লেখার সময় এবং কনফিগারেশন ফাইলের লাইন পরিবর্তন বা মুছে ফেলার প্রয়োজনে এটি একটি বেশ কাজের টিপস। পরিবর্তন করার জন্য আমরা sed বা perl ব্যবহার করতে পারি , আর মুছে ফেলার জন্য, sed দিয়ে কীভাবে তা করতে হয় তা আমরা ইতিমধ্যেই জানি।

শুভেচ্ছা


Google-এ পছন্দের উৎস হিসেবে যোগ করুন