কম্পিউটার

লিনাক্স কমান্ড লাইন ম্যাজিক – খুঁজুন এবং প্রতিস্থাপন করুন

এই নির্দেশিকা আপনাকে দেখাবে কিভাবে লিনাক্স ব্যবহার করার সময় ফাইল এবং ডিরেক্টরিতে শব্দ, স্ট্রিং বা বাক্যাংশ খুঁজে এবং প্রতিস্থাপন করতে হয়।

আপনি যখন Linux কমান্ড লাইনে কাজ করছেন এবং আপনি একটি বড় ফাইল বা বিপুল সংখ্যক ফাইল দেখতে পাবেন যেখানে আপনাকে একটি নির্দিষ্ট পাঠ্যকে অন্যটির সাথে প্রতিস্থাপন করতে হবে, পাঠ্যটির প্রতিটি উদাহরণ খুঁজে পাওয়া এবং আটকানো কিছুটা সময়সাপেক্ষ হতে পারে। আচ্ছা, আর চিন্তা করবেন না। লিনাক্স আপনার জন্য শুধু সমাধান আছে. এখানে স্বয়ংক্রিয়ভাবে এক বা একাধিক ফাইলে পাঠ্যের একটি স্ট্রিং খুঁজে বের করার এবং প্রতিস্থাপন করার একটি উপায়।

এই অনুশীলনের উদ্দেশ্যে আমরা "sed" নামে একটি লিনাক্স কমান্ড লাইন টুল ব্যবহার করব। "sed" একটি খুব শক্তিশালী এবং বহুমুখী টুল, এবং এর ক্ষমতা সম্পর্কে অনেক কিছু লেখা যেতে পারে। আমরা এখানে "sed" এর একটি খুব সীমিত দিক ব্যবহার করছি। আমি অবশ্যই সুপারিশ করব যে আপনি যদি এটির এই দিকটিকে আকর্ষণীয় মনে করেন তবে আপনি "sed" এ একটু বেশি পড়ুন৷

আমরা একটি ফাইলে পাঠ্যের একটি স্ট্রিং খুঁজে পেতে এবং প্রতিস্থাপন করতে নিম্নলিখিত সিনট্যাক্স ব্যবহার করতে যাচ্ছি:

# sed -i ‘s/[orginal_text]/[new_text]/' filename.txt

বলুন আপনার কাছে "database.txt" নামে একটি ফাইল আছে যেখানে আপনার ডাটাবেস সার্ভারের আইপি ঠিকানার অসংখ্য উদাহরণ রয়েছে। আপনি সবেমাত্র একটি নতুন ডাটাবেস সার্ভারে স্যুইচ করেছেন এবং নতুন সার্ভারের আইপি ঠিকানার সাথে এটি আপডেট করতে হবে। পুরানো IP ঠিকানা হল 192.168.1.16 এবং নতুনটি 192.168.1.22৷ আপনি এটি সম্পর্কে কীভাবে যান তা এখানে:

# cat database.txt
LOCAL_DATABASE =192.168.1.16
LOCAL_DIR =/home/calvin/
PROD_DB =192.168.1.16

sed -i ‘s/192.168.1.16/192.168.1.22/g’ database.txt
# cdatabase.txt এ
LOCAL_DATABASE =192.168.1.22
LOCAL_DIR =/home/calvin/
PROD_DB =192.168.1.22

এখন "database.inc" ফাইলটি খুলুন এবং নতুন আইপি ঠিকানাটি আপনার পুরানোটির জায়গায় এসেছে কিনা তা পরীক্ষা করুন। এখানে উপরের কমান্ডের বিচ্ছেদ। প্রথমে আপনি "sed" কমান্ডটি কল করুন। তারপরে আপনি এটিকে প্যারামিটার "-s" পাস করুন যা "এর জায়গায়" এর জন্য দাঁড়ায়। এখন আমরা একটু রেগুলার এক্সপ্রেশন ব্যবহার করি, যা সাধারণত "regex" নামে পরিচিত পরবর্তী বিটের জন্য। উদ্ধৃত স্ট্রিং-এর “s”-এর অর্থ হল “বিকল্প”, এবং শেষে “g”-এর অর্থ হল “গ্লোবাল”। তাদের মধ্যে এর ফলে "আপনি তাদের মধ্যে যে পাঠ্যের স্ট্রিং রাখেন তার বিশ্বব্যাপী প্রতিস্থাপন।

আপনি ঐচ্ছিকভাবে শেষে "g" এড়িয়ে যেতে পারেন। এর মানে হল প্রতিস্থাপনটি বিশ্বব্যাপী হবে না, যা কার্যত একটি লাইনে স্ট্রিংয়ের প্রথম উদাহরণের প্রতিস্থাপনে অনুবাদ করে। সুতরাং আপনি যে পাঠ্যটি প্রতিস্থাপন করার চেষ্টা করছেন তার একাধিক উদাহরণ সহ আপনার যদি একটি লাইন থাকে, তাহলে যা হবে তা এখানে রয়েছে

# cat database.txt
LOCAL_DATABASE =192.168.1.16
LOCAL_DIR =/home/calvin/
PROD_DB =192.168.1.16, 192.168.1.16

sed -i ‘s/192.168.1.16/192.168.1.22/’ database.txt
# cat database.txt
LOCAL_DATABASE =192.168.1.22
LOCAL_DIR =/home/calvin/
PROD_DB =192.168.1.22, 192.168.1.16

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

# খুঁজে নিন। -maxdepth 1 -নাম “*.txt” -টাইপ f -exec sed -i ‘s/wine/champagne/’ {} \

বর্তমান ডিরেক্টরির সমস্ত টেক্সট ফাইলের তালিকা পেতে আমরা find কমান্ড ব্যবহার করি। এটি "খুঁজুন। -maxdepth 1 -নাম "*.txt" -টাইপ f" অংশ। "অনুসন্ধান . maxdepth 1” কম্পিউটারকে বর্তমান ডিরেক্টরি দেখতে বলুন এবং বর্তমান ডিরেক্টরির চেয়ে গভীরে যাবেন না। ‘-name  “*.txt”’ অংশটি শুধুমাত্র “.txt” এর এক্সটেনশন সহ ফাইলগুলিকে তালিকাভুক্ত করতে বলে। তারপরে "-টাইপ এফ" বিভাগটি নির্দিষ্ট করে যে "খুঁজে নিন" শুধুমাত্র ঠিক মিলে যাওয়া ফাইলগুলি বেছে নেওয়া উচিত। অবশেষে “-exec” অংশটি অনুসরণকারী কমান্ডটি চালানোর জন্য “find” কে বলে, যা এই ক্ষেত্রে, টেক্সট প্রতিস্থাপনের জন্য “sed” কমান্ড – “sed -i 's/wine/champagne/' {} \ ”।

এখন আপনি ফাইলগুলিতে জিনিসগুলি খুঁজে পেতে এবং প্রতিস্থাপন করতে পারেন, কেন আমাদের অন্যান্য লিনাক্স টিপস দেখুন না :)


  1. উইন্ডোজ 10 এ নোটপ্যাডে পাঠ্য কীভাবে সন্ধান করবেন এবং প্রতিস্থাপন করবেন

  2. লিনাক্স এবং ম্যাকোসে ফাইলগুলি দ্রুত খুঁজে পেতে fd কীভাবে ব্যবহার করবেন

  3. ক্রোম এবং ফায়ারফক্সে কীভাবে পাঠ্য সন্ধান এবং প্রতিস্থাপন করবেন

  4. Notepad++ এ একটি নতুন লাইন দিয়ে স্ট্রিং/অক্ষর/চিহ্ন খুঁজুন এবং প্রতিস্থাপন করুন