Saya mencoba mengganti beberapa kata dalam file dengan menggunakan sed -i #expression1 #expression2
mengajukan
Something 123 item1
Something 456 item2
Something 768 item3
Something 353 item4
Output (Diinginkan)
anything 123 stuff1
anything 456 stuff2
anything 768 stuff3
anything 353 stuff4
Uji coba
Saya bisa mendapatkan output berikut dengan menggunakan sed -i
2 kali.
sed -i 's/Some/any/g' file
sed -i 's/item/stuff/g' file
Dapatkah saya memiliki cara yang memungkinkan untuk menjadikan ini sebagai perintah tunggal di tempat seperti
sed -i 's/Some/any/g' -i 's/item/stuff/g' file
Ketika saya mencoba kode di atas dibutuhkan s/item/stuff/g
sebagai file dan mencoba mengerjakannya ..
shell
shell-script
text-processing
sed
JigarGandhi
sumber
sumber
sed - i 's/Some\(.*\)item/any\1stuff/' file
Jawaban:
Tergantung pada versi
sed
pada sistem Anda, Anda mungkin dapat melakukannyaAnda tidak perlu
g
setelah slash terakhir padas
perintah di sini, karena Anda hanya melakukan satu penggantian per baris.Kalau tidak:
The
-i
pilihan memberitahused
ke mengedit file di tempat; jika ada karakter segera setelah-i
itused
buat cadangan file asli dan gunakan karakter tersebut sebagai ekstensi file cadangan. Misalnya,atau
akan memodifikasi
file
, menyimpan aslinya kefile.bak
.Tentu saja, pada sistem Unix (atau Unix-like), kita biasanya menggunakan '~' daripada '.bak', jadi
sumber
-i
. Jadised -i '' 's/a/b/;s/c/d/' file
ataused -i .back 's/a/b/;s/c/d/'
ataused -i.back 's/a/b/;s/c/d/'
ada.sed
Implementasi lain umumnya tidak mendukung-i
.-i
dan ekstensi.sed -i 's/$username = "root"/$username = "newuser"/; s/$password = "password"/$password = "passwd"/; s/$dbname="handicraftstore"/$dbname="handicraft"' Web/database.php
resultssed: -e expression #1, char 141: unterminated
s 's
perintah terakhir Anda tidak ada di bagian akhir/
.Anda dapat mengaitkan ekspresi sed dengan ";"
sumber
Ekspresi berganda menggunakan banyak
-e
opsi:atau Anda dapat menggunakan hanya satu:
Anda harus memberikan ekstensi untuk file cadangan, karena ketika beberapa implementasi
sed
, seperti OSX sed tidak bekerja dengan ekstensi kosong (Anda harus menggunakansed -i ''
untuk mengganti file asli).sumber
Anda dapat menggunakan Vim dalam mode Ex:
%
pilih semua gariss
penggantix
Simpan dan tutupsumber