আমি প্রতিস্থাপন করতে নিচের কোডটি চেষ্টা QQসঙ্গে ZZ, কিন্তু এটা আমি কি চাই না করে না:
var1=QQ
sed -i 's/$var1/ZZ/g' $file
যাইহোক, এই কোডটি আমি যা চাই তা করে:
sed -i 's/QQ/ZZ/g' $file
আমি কীভাবে ভেরিয়েবল ব্যবহার করব sed?
আমি প্রতিস্থাপন করতে নিচের কোডটি চেষ্টা QQসঙ্গে ZZ, কিন্তু এটা আমি কি চাই না করে না:
var1=QQ
sed -i 's/$var1/ZZ/g' $file
যাইহোক, এই কোডটি আমি যা চাই তা করে:
sed -i 's/QQ/ZZ/g' $file
আমি কীভাবে ভেরিয়েবল ব্যবহার করব sed?
উত্তর:
শেলটি ভেরিয়েবল প্রসারণের জন্য দায়ী। আপনি যখন স্ট্রিংয়ের জন্য একক উদ্ধৃতি ব্যবহার করেন, তখন এর বিষয়বস্তুগুলিকে আক্ষরিক সাথে বিবেচনা করা হবে, তাই sedএখন আক্ষরিক প্রতিটি ঘটনাকে প্রতিস্থাপনের চেষ্টা করা $var1হয় ZZ।
শ্বেতক্ষেত্র সংরক্ষণের সময় শেল প্রসারিত পরিবর্তনশীল করতে ডাবল উদ্ধৃতি ব্যবহার করুন:
sed -i "s/$var1/ZZ/g" "$file"
প্রতিস্থাপনের স্ট্রিংয়ে যখন আপনার উদ্ধৃতি চরিত্রের প্রয়োজন হবে, আপনি এটির আগে একটি ব্যাকস্ল্যাশ দিয়ে যেতে হবে যা শেল দ্বারা ব্যাখ্যা করা হবে। নিম্নলিখিত উদাহরণে, স্ট্রিং quote meপ্রতিস্থাপন করা হবে "quote me"(অক্ষর &দ্বারা ব্যাখ্যা করা হয় sed):
sed -i "s/quote me/\"&\"/" "$file"
যদি আপনার প্রচুর শেল মেটা-অক্ষর থাকে তবে প্যাটার্নের জন্য একক উদ্ধৃতি এবং ভেরিয়েবলের জন্য ডাবল উদ্ধৃতিগুলি বিবেচনা করুন:
sed -i 's,'"$pattern"',Say hurrah to &: \0/,' "$file"
s,pattern,replacement,পরিবর্তে আমি কীভাবে ব্যবহার করব তা লক্ষ্য করুন s/pattern/replacement/, /ইন এর সাথে হস্তক্ষেপ এড়াতে এটি করেছি \0/।
শেলটি sedপরবর্তী আর্গুমেন্ট (ধরে নেওয়া pattern=bertএবং file=text.txt) দিয়ে উপরের কমান্ডটি চালায় :
-i
s,bert,Say hurrah to &: \0/,
text.txt
যদি file.txtএতে থাকে bertতবে আউটপুটটি হবে:
Say hurrah to bert: \0/
gবিকল্প, যাতে আপনি s,foo,bar,gপরিবর্তে পাস করবে ।
\\0পরিবর্তে ব্যবহার \0করতে \0প্ররোচিত হন তবে একক উদ্ধৃতিতে আবদ্ধ হয়ে গেলে এটি করা উচিত নয় । অন্যথায় পুরো ম্যাচের পরিবর্তে sedআক্ষরিকের জন্য প্যাটার্নটি স্থান করে দেবে \0।
আমরা sedডাবল উদ্ধৃতি ব্যবহার করে ভেরিয়েবলগুলি ব্যবহার করতে পারি :
sed -i "s/$var/r_str/g" file_name
আপনার যদি /ভেরিয়েবলটিতে স্ল্যাশ থাকে তবে নীচের মতো বিভিন্ন বিভাজক ব্যবহার করুন:
sed -i "s|$var|r_str|g" file_name
/থাকে => এটি আমাকে বাঁচায়! আমার পরিবর্তনশীলটি একটি ইউআরএল এবং এতে রয়েছে /। |বিভাজক হিসাবে ব্যবহার করতে স্যুইচ করা আমার সমস্যাটি স্থির করেছে