Uyarı: Bu tehlikeli bir yöntemdir! Linux'ta i / o arabelleklerini kötüye kullanır ve belirli arabellekleme seçenekleriyle küçük dosyalar üzerinde çalışmayı başarır. Bu ilginç bir merak. Ama gerçek bir durum için kullanmayın!
Ayrıca -i
seçeneği sed
size kullanabilirsiniz tee
yarar .
Gönderen man
:
tee - standart girişten okuma ve standart çıkış ve dosyalara yazma
Yani, çözüm şöyle olurdu:
sed s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html | tee | tee index.html
- burada tee
boru hattının arabelleğe alındığından emin olmak için tekrarlanır. Daha sonra, boru hattındaki tüm komutlar üzerinde çalışmak için bir girdi elde edilene kadar engellenir. Boru hattındaki her komut, yukarı akış komutları , komutun girişine 1 tampon bayt (boyut bir yerde tanımlanır ) yazdığında başlar . Son komuttee index.html
dosyayı yazmak için açan ve dolayısıyla boşaltan , yukarı akış boru hattı bittikten ve çıktı boru hattı içindeki arabellekte bulunduktan sonra çalışır.
Büyük olasılıkla aşağıdakiler işe yaramaz:
sed s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html | tee index.html
- boru hattının her iki komutunu da engellemeden aynı anda çalıştıracaktır. (Boru hattını bloke olmadan tampon ile yerine tampon hattı ile bayt satır geçmelidir. Çalıştırdığınızda aynı cat | sed s/bar/GGG/
. Daha etkileşimli ve sadece 2 komutların genellikle boru hatları tamponlama ve engelleme olmadan çalıştırmak engelleme olmadan. Daha uzun boru hatları tamponlanır.) tee index.html
İrade dosyayı yazmak için açın ve boşaltılacaktır. Ancak, arabelleği her zaman açarsanız, ikinci sürüm de çalışır.
perl -pi -w -e 's/STRING_TO_REPLACE/REPLACE_WITH/g;' index.html