हां ऐसा करने के कई तरीके हैं। आप इन गतिविधियों का उपयोग कर सकते हैं 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
यह विधि ब्रेसेस '{...}' के साथ एक उप-शेल बनाती है, जहाँ फ़ाइल को इसके माध्यम से पुनर्निर्देशित किया जाता है:
$ { ... } < data.txt
एक बार फ़ाइल को उप-शेल में रीडायरेक्ट कर दिया गया है, इसे हटा दिया गया है और फिर awk
उस फ़ाइल की सामग्री के खिलाफ चलाया जाता है जिसे सब-शेल स्टैटिन में पढ़ा गया था। इस सामग्री को तब संसाधित किया जाता है 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
। इसके अलावा, कई उपकरण और भाषाएं भी सादे पाठ स्ट्रिंग प्रतिस्थापन कर सकते हैं। तो आपका प्रश्न किसी तरह व्यापक है।