হ্যাঁ এটি করার বিভিন্ন উপায় রয়েছে। আপনি এই ক্রিয়াকলাপগুলি ব্যবহার করতে পারেন awk
, perl
বা bash
করতেও পারেন। সাধারণত যদিও sed
এই ধরণের কাজগুলি করার জন্য সম্ভবত সবচেয়ে অ্যাপ্রোপস সরঞ্জাম।
উদাহরণ
বলুন যে আমার কাছে একটি ফাইলে এই নমুনা ডেটা রয়েছে data.txt
:
foo bar 12,300.50
foo bar 2,300.50
abc xyz 1,22,300.50
awk
$ awk '{gsub("foo", "foofoofoo", $0); print}' data.txt
foofoofoo bar 12,300.50
foofoofoo bar 2,300.50
abc xyz 1,22,300.50
পার্ল
$ perl -pe "s/foo/foofoofoo/g" data.txt
foofoofoo bar 12,300.50
foofoofoo bar 2,300.50
abc xyz 1,22,300.50
ইনলাইন সম্পাদনা
উপরের উদাহরণগুলি সরাসরি ফাইলগুলিকেও পরিবর্তন করতে পারে। পার্ল উদাহরণটি তুচ্ছ। কেবল -i
স্যুইচ যুক্ত করুন ।
$ perl -pie "s/foo/foofoofoo/g" data.txt
কারণ awk
এটি কিছুটা কম প্রত্যক্ষ কিন্তু কার্যকর হিসাবে:
$ { rm data.txt && awk '{gsub("foo", "foofoofoo", $0); print}' > data.txt; } < data.txt
এই পদ্ধতিটি বন্ধনীগুলির {...} with সহ একটি উপ-শেল তৈরি করে যেখানে ফাইলটি এর মাধ্যমে এটির মধ্যে পুনঃনির্দেশ করা হয়:
$ { ... } < data.txt
একবার সাব-শেলের মধ্যে ফাইলটি পুনঃনির্দেশিত হয়ে গেলে, এটি মুছে ফেলা হয় এবং তারপরে awk
উপ-শেলগুলিতে পড়া ফাইলটির সামগ্রীগুলির বিরুদ্ধে চালানো হয় STDIN। এই বিষয়বস্তুটি পরে প্রক্রিয়া করা হয় awk
এবং একই ফাইলটির নাম হিসাবে এটি সরিয়ে ফেলা হয়, কার্যকরভাবে এটি প্রতিস্থাপন করে।
$var=~s/a/b/g
,gsub(/a/,"b",var)
,var.gsub(/a/,'b')
,var.replace(/a/g,'b')
,preg_replace("/a/","b",$var)
,regsub -all a b $var
। এর পাশাপাশি, অনেক সরঞ্জাম এবং ভাষাও সরল পাঠ্য স্ট্রিং প্রতিস্থাপন করতে পারে। সুতরাং আপনার প্রশ্ন একরকম বিস্তৃত।