হ্যাঁ এটি করার বিভিন্ন উপায় রয়েছে। আপনি এই ক্রিয়াকলাপগুলি ব্যবহার করতে পারেন 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। এর পাশাপাশি, অনেক সরঞ্জাম এবং ভাষাও সরল পাঠ্য স্ট্রিং প্রতিস্থাপন করতে পারে। সুতরাং আপনার প্রশ্ন একরকম বিস্তৃত।