একটি substring নিষ্কাশন এবং sed সঙ্গে মূল স্ট্রিং যোগ করুন কিভাবে?


0

আমি একটি শ স্ক্রিপ্ট উইচ লিখতে চেষ্টা করছি ইনপুট হিসাবে একটি স্ট্রিং পায়, একটি নির্দিষ্ট পদার্থ নিষ্কাশন এবং ইনপুট স্ট্রিং একটি নির্দিষ্ট অভিব্যক্তি পরে এটি যোগ করে। আমি সঙ্গে অনেক চেষ্টা sed -i'N ... কিন্তু কিছুই কাজ করে না।

এই ইনপুট স্ট্রিং একটি উদাহরণ:

<img src="images/Button-7.jpg" width="251" height="129" border="0" alt=""></a></td>

আমি এই আউটপুট হিসাবে পেতে চেষ্টা করছি:

<img src="images/Button-7.jpg" name="Button-7" width="251" height="129" border="0" alt=""></a></td>

নিম্নলিখিত কাজ। কিন্তু আমি হাত দ্বারা প্রতিটি বাটন ঘোষণা করতে হবে।

VarA='Button-7.jpg'
VarB='Button-7.jpg" name="Button-7'

sed "s/${VarA}/${VarB}/g" index.html > temp.html
mv temp.html index.html

উত্তর:


2

এটা ভাল কাজ করার জন্য আপনি গ্রুপ ক্যাপচার এবং backreferences নিয়োগ করতে হবে যে আমার মনে হয়। সেখানে ধারণাগুলির সাথে সামান্য কিছু খেলছি, আমি আপনার ব্যবহার ক্ষেত্রে যা বুঝি সেটির জন্য আমি ভালভাবে কাজ করেছি:

sed 's#src="images/\(.*\).jpg"#& name="\1"#'

এখানে আকর্ষণীয় জিনিসগুলি হল:

  1. ব্যবহার # পরিবর্তে নিয়মিত বিভাজক হিসাবে /। এটি সম্পর্কে সহজ কারণ করে তোলে কারণ এটি প্যাটার্নের ফরোয়ার্ড স্ল্যাশগুলি থেকে পালিয়ে যাওয়ার প্রয়োজন নেই।
  2. (পালানো) বন্ধনী ব্যবহার করে একটি গোষ্ঠীর মধ্যে ইনপুট ক্যাপচার করা।
  3. সঙ্গে পুরো ম্যাচ পুনরায় ব্যবহার & (টুপি টিপ: জি-ম্যান)।
  4. প্রতিস্থাপিত টেক্সট মধ্যে বন্দী গ্রুপের পিছনে রেফারেন্স ( \1 )।

(1) আমি অনুমান করছি যে আপনি পরিবর্তন করতে চাইছেন না .jpg থেকে .jp। (2) আপনি উদ্ধৃতি থেকে পালাতে হবে না (যেমন, \" )। (3) আপনি ব্যবহার করতে সক্ষম হওয়া উচিত & সম্পূর্ণ বিকল্প পাওয়া স্ট্রিং ; উদাহরণ স্বরূপ, sed 's#src="images/\(.*\).jpg"#& name="\1"#'
G-Man

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