Yanıtlar:
Bence aradığınızı düşünüyorum -i:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Örneğin:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
Bir sonek sağlarsanız, bir yedekleme dosyası oluşturur:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
Giriş dosyası değiştirilmiş ve orijinal dosya verilerini içeren bir yedekleme oluşturulmuştur.
Ayrıca, bu GNU için olduğuna dikkat sedvardır, küçük farklar farklı arasındaki biçiminde seduygulamaları.
sedyerinde düzenleme yapmaz. Yeni bir dosya oluşturur ve eskisinin üzerine yazar, inode değişir.
{ rm file; cmd > file; } < fileokuduğu ve aynı dosyaya yazdığı sonucuna yol açacaktır. Aynı adı taşıyan iki farklı dosya. Fakat burada bir tartışma başlatmak istemiyorum.
sed: 1: "foo.txt": invalid command code fçalışırken alırım sed -i 's/o/X/g' foo.txt. Ancak, bir uzantı sağlamak gibi, sed -i .bak 's/o/X/g' foo.txtiyi çalışıyor. Yedek dosyaları oluşturmadan nasıl çalışacağını bilen var mı?
sed -i '' 's/o/X/g' foo.txt
Bu çözüm HPUX (UNIX) için çalışıyor:
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
-eseçenek birden fazla sedkomut çalıştırmak içindir
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
dikkate file.txtolarak
linux os
o zaman O / P
unix os
-i seçenek kalıcı olarak değişiklikleri kaydeder ...
-eBayrak ekspresyonu ifade eder. Muhtemelen bu-ibayraklarıin-placeistiyorsunuz ve kullanmanızı şiddetle tavsiye ediyorumsed -i.bak 's/../' filename