উত্তর:
আমি মনে করি আপনি খুঁজছেন -i:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
উদাহরণ স্বরূপ:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
আপনি যদি প্রত্যয় সরবরাহ করেন তবে এটি একটি ব্যাকআপ ফাইল তৈরি করবে:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
ইনপুট ফাইলটি সংশোধন করা হয়েছে এবং আসল ফাইল ডেটাযুক্ত একটি ব্যাকআপ তৈরি করা হয়েছে।
এছাড়াও লক্ষ করুন যে এটি জিএনইউর জন্য sed, বিভিন্ন বাস্তবায়নের মধ্যে বিন্যাসে কিছুটা পার্থক্য রয়েছে sed।
sedইন-প্লেস এডিটিং করে না। এটি একটি নতুন ফাইল তৈরি করে এবং পুরানোটিকে ওভাররাইট করে, ইনোড পরিবর্তন হয়।
{ rm file; cmd > file; } < fileএই সিদ্ধান্তে পৌঁছায় যে সিএমডি একই ফাইলটি পড়ে এবং লেখায় যা এটি নয়। এটি দুটি ফাইল বিকৃত করে যা কেবল একই নামের সাথে ঘটে। তবে আমি এখানে একটি আলোচনা শুরু করতে চাই না।
sed: 1: "foo.txt": invalid command code fচলার সময় আমি পাই sed -i 's/o/X/g' foo.txt। তবে, একটি এক্সটেনশন সরবরাহ করা যেমন sed -i .bak 's/o/X/g' foo.txtকাজ করে works কোনও ধারণা কীভাবে এটি ব্যাকআপ ফাইল তৈরি না করে কাজ করবে?
sed -i '' 's/o/X/g' foo.txt
এই সমাধানগুলি HPUX (UNIX) এর জন্য কাজ করে:
1
{ rm test1.sh && awk '{gsub("Error", "NO_Error", $0); print}' > test1.sh; } < test1.sh.:
2।
perl -pi -e 's/Error/NO_Error/g' test1.sh
3।
sed 's/Error/NO_Error/g' test1.sh | tee test1.sh
-eবিকল্পটি একাধিক sedকমান্ড কার্যকর করার জন্য
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
file.txtহিসাবে বিবেচনা করুন
linux os
তাহলে ও / পি হয়
unix os
-i বিকল্প স্থায়ীভাবে পরিবর্তনগুলি সংরক্ষণ করে ...
-eপতাকা অভিব্যক্তি জন্য দাঁড়িয়েছে। আপনি সম্ভবত-iপতাকাটি চান যার অর্থin-placeএবং আমি আপনাকেsed -i.bak 's/../' filename