Sed, çıktıyı bir dosyaya kaydedebilir mi?


33

> yapabilir.

echo "text" > file

tee yapabilir.

echo "test" | tee file 

sedYukarıdakilerden herhangi birini kullanmadan yapabilir miyim ? sedKomutun çıktısını ya >da kullanmadan bir dosyaya kaydetmek mümkün müdür tee?


Lütfen burada soru göndermeden önce cevabı kendiniz bulmaya çalışın. Kullanıcılarımızdan ilk sorduğumuz şey, göndermeden önce arama yapmak ve araştırma yapmak . Tek yapmanız gereken tek şey olduğunu sed '' file > newfileve bunu görmüş olurdu >gerçekten kullanılabilir sedtıpkı diğer program ile benzeri.
terdon

1
Hala >operatörü kullanıyor . Bunun yerine kullanılabilecek bir sed komutu olup olmadığını merak ettim. Ama bu soruyu çok kötüyse silerim.
Folatt

Ah doğru. Tamam, bu çok farklı bir soru. sed -iCevabı kabul ettiğinizden beri sorunuzu düzenleyeceğim ve neyin peşinde olduğunuzu netleştireceğim.
terdon

" sed Verilerin yeniden yönlendirilmesi içindir teeve >(olması gerektiği) kabul etmedim .
Folatt

Yanıtlar:


49

te ve> veri yeniden yönlendirmesi için kullanılabilir, çünkü bunlar linux'ta veri yeniden yönlendirmesi için kullanılır.

Diğer taraftan sed, bir akış editörüdür. sed, verinin yeniden yönlendirilmesi için tee ve> anlamına gelmez. Ancak bunu yapmak için komutların birleşimini kullanabilirsiniz.

tee veya> sed ile kullanın

sed 's/Hello/Hi/g' file-name | tee file

veya

sed 's/Hello/Hi/g' file-name > file

-i seçeneğiyle sed komutunu kullanın

sed -i 's/Hello/Hi/g' file-name

Sonuncusu yönlendirmez, bunun yerine dosyanın kendisinde değişiklikler yapacaktır.


2
Teşekkürler. Sorumu anladın. Dolayısıyla yanıt hayır. sedKendi kendine yapabileceğini düşündüm , çünkü bu -i.bakseçenekle yedekleme dosyaları da oluşturabiliyor .
Folatt

2
Doğru. Ayrıca -i.bak sabit bir seçenek değildir, yedekleme dosyanızın olmasını istediğiniz herhangi bir uzantıyı kullanabilirsiniz. örneğin -i.log da işe yarayacak. :)
ankidaemon

Ben sadece aradığımı eklemek isterdim echo "test" | dd of=file status=none, belirsiz çıktı yönlendirmesini kullanmadan bir yankı çıktısını bastırarak 2> /dev/null, ancak bunun yerine sed'in sınırlamaları için sordum. Sed'in yeteneklerinden gerçekten etkilendim, çünkü dosyaya satır ekleyebiliyordu, bana sed'in yapabileceği her şeyi yapabileceği izlenimini verdi.
Folatt

11

sedvardır wne gerektirir yapabilir komutu:

w dosya adı

Geçerli model alanını dosya adına yazın.

sed 'w file'kendi başına aynı etkiye sahip olacaktır tee file. Başka sed komutları varsa, wsonuncuyu yazın:

sed 's/This/That/;w file'

Ancak, bu -n/--quiet/--silentseçenek etkilenmez . Bu sadece standart çıktıya gitmiş olan içeriği gizler.


0

Ankidaemon, sed çıktısını bir dosyaya nasıl kaydedebileceğimize dikkat çekti. Bir dosya üzerinde bazı işlemler yapıyorsak, yani değiştirip çıktıyı aynı dosyaya kaydetmek istediğimizi de eklemek isterim. Yerinde düzenlemeleri mümkün kılan bir -ibayrak var sed. Ancak bu süreçte bir yedekleme dosyası oluşturur. Buna ihtiyacım vardı değilse, bu sadece boş bir dosya adı geçen yapılabilir -ibayrak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.