স্ল্যাশ সঙ্গে একটি নির্দিষ্ট স্ট্রিং প্রতিস্থাপন করার জন্য sed ব্যবহার করুন


1

আমার একটি বড় টেক্সট ফাইল রয়েছে- একটি উইন্ডোজ রেজিস্ট্রি ফাইল - প্রায় 5.5 এমবি এবং আমি একটি স্ট্রিং "serv \ b \ param \" অপসারণ করতে হবে। Gedit বা ন্যানো দিয়ে খোলা কাজ করে না। এটি কিছু অযৌক্তিক দীর্ঘ সময়ের জন্য 100% সিপিইউ সময় গ্রাস করবে অথবা এটি কেবল পাঠ্যের র্যান্ডম আবর্জনা মুদ্রণ করবে। আমি linux থেকে এই কমান্ড ব্যবহার করার চেষ্টা করেছি কারণ আমি অন্যটি ব্যবহার করতে পারি না:

sed -i 's|"serv\b\Param"|""|g' ~/Desktop/3.reg

sed -i 's|\"serv\b\Param"|\""|g' ~/Desktop/3.reg

sed -i 's:serv\b\Param:"":g' ~/Desktop/3.reg

sed -i 's:serv\b\Param::g' ~/Desktop/3.reg

sed -i 's:"serv\b\Param":"":g' ~/Desktop/3.reg

কিছুই এখনো পর্যন্ত কাজ। এই কমান্ড সঙ্গে কি ভুল?


মধ্যে "serv\b\Param\", যারা উদ্ধৃতি এবং তিন ব্যাকস্ল্যাশ ফাইলের আক্ষরিক অক্ষর? অথবা, তারা অন্য কিছু প্রতিনিধিত্ব করতে যোগ করেছেন?
John1024

না, এটি শুধু সার্ভার \ b \ Param \ এবং কোন উদ্ধৃতি নেই।
user128712

উত্তর:


0

মৌলিক সমস্যা যে \ নিয়মিত এক্সপ্রেশন বিভিন্ন ক্রম পরিচয়, যাতে মেলে \ ইনপুট প্রবাহ আপনি ব্যবহার করতে হবে \\ সেখানে.

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

sed -i 's:serv\\b\\Param::g' ~/Desktop/3.reg

সার্চ বা প্রতিস্থাপনের স্ট্রিংগুলির মধ্যে ডাবল কোটগুলির প্রয়োজন নেই যতক্ষণ না তারা সার্চ মাপদণ্ডের অংশ হিসাবে তৈরি হয়: সম্পাদনা অভিব্যক্তিটির চারপাশে একক উদ্ধৃতিগুলি শেলের যতদূর শত্রু হওয়া পর্যন্ত বিশেষ অর্থগুলি সরিয়ে দেয়। sed আক্ষরিক অভিব্যক্তি দেখায়।


0

স্ল্যাশ পালাতে হবে:

sed -i 's|serv\\b\\Param\\||g' ~/Desktop/3.reg

মধ্যে sed, একটি ব্যাকল্ল্যাশ সাধারণত কিছু জন্য একটি পালা অক্ষর। উদাহরণস্বরূপ, জিএনইউ sed, একটি পালা-বি, হিসাবে \b, শব্দ শব্দের অর্থ বোঝানো হয়। যেমন ব্যাখ্যা প্রতিরোধ করতে, একটি সারিতে দুটি ব্যাকস্ল্যাশ রাখুন যেখানে আপনি একটি একক আক্ষরিক ব্যাকস্ল্যাশের সাথে মেলে।

উদাহরণ

আপনার নমুনার উপর ভিত্তি করে (মন্তব্য অনুযায়ী আপডেট), আসুন এই ফাইলটি দিয়ে শুরু করি:

$ cat 3.reg
serv\b\Param\
abc serv\b\Param\ def

উপরে আবেদন sed কমান্ড প্রয়োগ করুন:

$ sed -i 's|serv\\b\\Param\\||g' 3.reg
$ cat 3.reg

abc  def

প্যাটার্ন সফলভাবে মুছে ফেলা হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.