Jawaban:
Saya pikir Anda mencari -i:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Sebagai contoh:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
Jika Anda memberikan akhiran, itu akan membuat file cadangan:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
File input dimodifikasi dan cadangan yang berisi data file asli dibuat.
Perhatikan juga bahwa ini untuk GNU sed, ada sedikit perbedaan dalam format antara sedimplementasi yang berbeda .
sedtidak melakukan pengeditan di tempat. Ini menciptakan file baru dan menimpa yang lama, perubahan inode.
{ rm file; cmd > file; } < fileakan mengarah pada kesimpulan bahwa cmd membaca dan menulis ke file yang sama, yang tidak. Ada dua file berbeda yang kebetulan memiliki nama yang sama. Tetapi saya tidak ingin memulai diskusi di sini.
sed: 1: "foo.txt": invalid command code fketika menjalankan sed -i 's/o/X/g' foo.txt. Namun, memberikan ekstensi, seperti sed -i .bak 's/o/X/g' foo.txtberfungsi dengan baik. Ada ide bagaimana membuatnya bekerja tanpa membuat file cadangan?
sed -i '' 's/o/X/g' foo.txt
Solusi ini berfungsi untuk 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
-eopsi untuk mengeksekusi banyak sedperintah
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
pertimbangkan file.txtsebagai
linux os
maka O / P adalah
unix os
-i opsi menyimpan perubahan secara permanen ...
-ebendera singkatan ekspresi. Anda mungkin menginginkan-ibendera yang artinyain-placedan saya sangat menyarankan Anda untuk menggunakansed -i.bak 's/../' filename