Misalkan saya punya file dengan garis
aaa = bbb
Sekarang saya ingin menggantinya dengan:
aaa = xxx
Saya dapat melakukannya sebagai berikut:
sed "s / aaa = bbb / aaa = xxx / g"
Sekarang saya punya file dengan beberapa baris sebagai berikut:
aaa = bbb aaa = ccc aaa = ddd aaa = [sesuatu yang lain]
Bagaimana saya bisa mengganti semua baris ini aaa=[something]
dengan aaa=xxx
menggunakan sed ?
[something else]
teks literalnya, atau apakah itu hanya penampung? Apa format yang memungkinkan setelah tanda sama dengan?Jawaban:
Coba ini:
sumber
.*
.g
ganti semua instance dari regexp dengan penggantianAnda juga dapat menggunakan baris perubahan sed untuk mencapai ini:
Ini akan melewati dan menemukan baris yang lulus
aaa=
tes, yang berarti bahwa baris berisi huruf-hurufaaa=
. Kemudian ia mengganti seluruh baris dengan aaa = xxx. Anda dapat menambahkan^
di awal tes untuk memastikan Anda hanya mendapatkan garis yang dimulaiaaa=
tetapi itu terserah Anda.sumber
sed
membutuhkanc
untuk diikuti oleh garis miring terbalik dan baris baru, dan tidak menambahkan baris baru untuk teks disisipkan, tetapi Anda dapat menggunakan misalnya$'/aaa=/c\\\naaa=xxx\n'
.Seperti ini:
Jika Anda ingin menjamin bahwa
aaa=
ini ada di awal baris, buat:sumber
sed 's/aaa=.*/aaa=\'xxx\'/'
tetapi itu membuka>
prompt di baris baru ...Jika Anda ingin menggunakan
awk
maka ini akan berhasil jugasumber
sumber
Ini mungkin bekerja untuk Anda:
sumber
bbb
,ccc
danddd
cukup apa yang OP yang ada dalam pikiran.