Dapatkah sed menyimpan outputnya ke file?

33

> dapat melakukannya.

echo "text" > file

tee dapat melakukannya.

echo "test" | tee file 

Bisakah sedmelakukannya tanpa menggunakan salah satu di atas? Apakah mungkin untuk menyimpan output dari suatu sedperintah ke file tanpa menggunakan salah satu >atau tee?

Folatt
sumber
Coba temukan jawabannya sendiri sebelum mengirim pertanyaan di sini. Hal pertama yang kami minta dari pengguna kami adalah mencari dan meneliti sebelum memposting. Yang perlu Anda lakukan adalah sed '' file > newfiledan Anda akan melihat bahwa >memang dapat digunakan sedsama seperti dengan program lain.
terdon
1
Itu masih menggunakan >operator. Saya tertarik jika ada perintah sed yang bisa digunakan sebagai gantinya. Tetapi saya akan menghapus pertanyaan ini jika sangat buruk.
Folatt
Ah benar Oke, itu pertanyaan yang sangat berbeda. Karena Anda menerima sed -ijawabannya, saya akan mengedit pertanyaan Anda dan menjelaskan apa yang Anda cari.
terdon
Saya menerima " sed tidak dimaksudkan untuk pengalihan data sebagaimana teedan >dimaksudkan".
Folatt

Jawaban:

49

tee dan> dapat digunakan untuk redirection data karena ini dimaksudkan untuk digunakan untuk redirection data di linux.

sed di sisi lain adalah editor aliran. sed tidak dimaksudkan untuk pengalihan data seperti tee dan> seharusnya. Namun Anda dapat menggunakan konjungsi perintah untuk melakukannya.

gunakan tee atau> dengan sed

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

atau

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

gunakan sed dengan opsi -i

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

yang terakhir tidak mengarahkan, melainkan akan membuat perubahan pada file itu sendiri.

ankidaemon
sumber
2
Terima kasih. Anda mengerti pertanyaan saya. Jadi jawabannya tidak. Saya pikir seditu sendiri mungkin bisa melakukannya, karena itu juga mampu membuat file cadangan dengan -i.bakopsi.
Folatt
2
Benar. Juga -i.bak bukan opsi tetap, Anda dapat menggunakan ekstensi apa pun, yang ingin Anda miliki file cadangan Anda. misalnya -i.log juga akan berfungsi. :)
ankidaemon
Saya hanya ingin menambahkan yang benar-benar mencari echo "test" | dd of=file status=none, menekan output gema tanpa menggunakan redirection output yang tidak jelas 2> /dev/null, tetapi sebaliknya meminta batasan sed. Saya sangat terkesan dengan kemampuan sed karena mampu menambahkan baris dalam file, memberi saya kesan bahwa sed bisa melakukan apa pun yang bisa dilakukan tee dan banyak lagi.
Folatt
11

sedmemiliki wperintah yang dapat melakukan apa yang Anda butuhkan:

nama file

Tulis ruang pola saat ini ke nama file.

sed 'w file'sendiri akan memiliki efek yang sama dengan tee file. Jika ada perintah sed lainnya, letakkan yang wterakhir:

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

Namun, ini tidak akan terpengaruh oleh -n/--quiet/--silentopsi. Itu hanya menekan konten yang seharusnya pergi ke output standar.

JigglyNaga
sumber
0

Seperti ankidaemon dengan benar menunjukkan bagaimana kita dapat menyimpan output sed ke file. Saya ingin menambahkan bahwa jika kita melakukan beberapa operasi pada file yaitu ganti dan ingin menyimpan output ke file yang sama. Ada -ibendera sedyang memungkinkan pengeditan di tempat. Namun ini membuat file cadangan dalam proses. Jika itu tidak diperlukan, itu bisa dilakukan dengan hanya memberikan nama file kosong ke -ibendera.

Waqar Ahmed
sumber