Sed নিউলাইনকে স্থান দিয়ে প্রতিস্থাপন করুন

Sed Ni Ula Inake Sthana Diye Pratisthapana Karuna



UNIX/Linux-এ, sed কমান্ড স্ট্রীম সম্পাদনা করার জন্য একটি নিবেদিত টুল। এটি একটি পাঠ্য প্রবাহে বিভিন্ন ক্রিয়াকলাপ সম্পাদন করতে পারে, যেমন অনুসন্ধান, সন্ধান এবং প্রতিস্থাপন, এবং সন্নিবেশ/মোছা। বেশিরভাগ অংশে, তবে, পাঠ্য বিষয়বস্তু খুঁজে পেতে এবং প্রতিস্থাপন করতে sed ​​ব্যবহার করা হয়।

এই নির্দেশিকায়, আমরা sed ব্যবহার করে স্পেস দিয়ে নতুন লাইন প্রতিস্থাপন করব।

টেক্সট প্রতিস্থাপনের জন্য sed ব্যবহার করা হচ্ছে

প্রথমে, আসুন দ্রুত sed ব্যবহার করে প্রাথমিক অনুসন্ধান এবং প্রতিস্থাপনের দিকে নজর দেওয়া যাক। কিছু অতিরিক্ত বিকল্পের সাথে স্পেস দিয়ে নতুন লাইন প্রতিস্থাপন করার সময় একই পদ্ধতি ব্যবহার করা হবে। কমান্ড গঠন নিম্নরূপ:







$sed -e 's///'

নিম্নলিখিত কমান্ডটি দেখুন:



$ echo 'দ্রুত ব্রাউন ফক্স' | sed -e 's/quick/fast/g'



ইকো কমান্ড স্ট্রিংকে প্রিন্ট করে STDOUT . STDOUT স্ট্রীম তখন পাইপযুক্ত sed করা আমরা sed-কে নির্দেশ দিয়েছি দ্রুত-এর যেকোনও দৃষ্টান্ত দ্রুত-এর সঙ্গে প্রতিস্থাপন করতে। অবশেষে, আউটপুট পর্দায় মুদ্রিত হয়।





স্থান দিয়ে Newlines প্রতিস্থাপন

প্রদর্শনের জন্য, আমি কয়েকটি ডামি বিষয়বস্তু সহ নিম্নলিখিত টেক্সট ফাইল test.txt তৈরি করেছি:

$ cat test.txt



sed কমান্ড বিভিন্ন প্যাটার্ন বর্ণনা করার জন্য নিয়মিত এক্সপ্রেশন গ্রহণ করে। এই বৈশিষ্ট্যটি ব্যবহার করে, আমরা নতুন লাইনকে \n হিসাবে বর্ণনা করতে যাচ্ছি। আসুন নতুন লাইনগুলিকে হোয়াইটস্পেস দিয়ে প্রতিস্থাপন করার চেষ্টা করি:

$sed -e 's/\n/ /g' test.txt

তবে, এটি আশানুরূপ কাজ করেনি। এই লক্ষ্য অর্জনের জন্য, আমাদের কিছু অতিরিক্ত বিকল্পের প্রয়োজন। নিম্নলিখিত কমান্ডটি দেখুন:

$sed -e ':a;N;$!ba;s/\n/ /g' test.txt

sed কমান্ডের একাধিক বিভাগ রয়েছে; প্রতিটি একটি নির্দিষ্ট কাজ নির্দেশ করে:

  • :a: একটি লেবেল 'a' তৈরি করে
  • N: প্যাটার্ন স্পেসে পরবর্তী লাইন যুক্ত করে
  • $!ba: শেষ লাইন না হলে, 'a' লেবেলে ফিরে আসে
  • s/\n/ /g: নতুন লাইন (\n) খুঁজে বের করে এবং স্থান (/ /) দিয়ে প্রতিস্থাপন করে। প্যাটার্নটি বিশ্বব্যাপী মেলে (/g)

sed কমান্ডটি ধাপের মধ্য দিয়ে লুপ করে যতক্ষণ না এটি শেষ লাইনে পৌঁছায়, সমস্ত \n অক্ষরকে স্থান দিয়ে প্রতিস্থাপন করে।

এই জটিল কমান্ডের পরিবর্তে, আমরা -z পতাকা ব্যবহার করে জিনিসগুলিকে সহজ করতে পারি যা নাল-বিভাজিত রেকর্ডগুলির সাথে কাজ করার জন্য sed-কে নির্দিষ্ট করে। কমান্ড এই মত দেখাবে:

$sed -z -e 's/\n/ /g' test.txt

বিকল্প পদ্ধতি

যদিও sed কাজটি ঠিকঠাক করতে পারে, কিছু বিকল্প সরঞ্জাম রয়েছে। এই বিভাগে, আমরা সংক্ষেপে তাদের কয়েকটি পরীক্ষা করব।

নিম্নলিখিত উদাহরণের জন্য, আমরা একটি সাধারণ ফ্যাশনে সাদা স্থান দিয়ে নিউলাইন প্রতিস্থাপন করতে tr কমান্ড ব্যবহার করতে পারি:

$ tr '\n' ' ' < test.txt

আমরা কাজ করতে পার্ল ব্যবহার করতে পারি। নিম্নলিখিত সিনট্যাক্সটি আমরা sed এর সাথে যা ব্যবহার করেছি তার অনুরূপ (কিন্তু সরলীকৃত):

$ perl -p -e 's/\n//' test.txt

হোয়াইটস্পেস দিয়ে নতুন লাইন প্রতিস্থাপন করার আরেকটি উপায় হল পেস্ট কমান্ড ব্যবহার করা। মনে রাখবেন এটি শুধুমাত্র একটি অক্ষর সরাতে পারে:

$ paste -s -d ' test.txt

sed এর মতই, লিনাক্স আরেকটি টুল awk নিয়ে আসে। sed এর মতো, এটি ইনপুটে কিছু উন্নত প্রতিস্থাপনও করতে পারে। আমাদের উদ্দেশ্যে, নিম্নলিখিত awk কমান্ডটি ব্যবহার করুন:

$ awk 1 ORS=' test.txt

উপসংহার

এই নির্দেশিকাটি অনুসন্ধান করেছে কিভাবে আমরা sed ব্যবহার করে স্পেস দিয়ে নিউলাইন প্রতিস্থাপন করতে পারি। এটি দুটি ভিন্ন উপায়ে অর্জন করা হয়েছিল। এই নির্দেশিকাটিতে অন্যান্য প্রাসঙ্গিক সরঞ্জামগুলিও রয়েছে যা আমরা নতুন লাইনকে হোয়াইটস্পেস দিয়ে প্রতিস্থাপন করতে ব্যবহার করতে পারি।

মুখস্থ করা কঠিন জটিল কমান্ডগুলি ব্যবহার করার পরিবর্তে, আমরা লিনাক্সে অনেক কিছু সম্পাদন করতে ব্যাশ স্ক্রিপ্টিং ব্যবহার করি। যদিও এটি কিছু পারফরম্যান্সের খরচে আসে, নমনীয়তা এবং ব্যবহারযোগ্যতা এটির মূল্যবান। এই সম্পর্কে আরও জানো নতুনদের জন্য ব্যাশ স্ক্রিপ্টিং .