cara mengganti substring garis yang tidak diketahui dengan sed

0

Saya ingin mengganti substring dalam satu baris, tetapi saya tidak tahu apa itu substring. Saya tahu bagaimana garis dimulai. Misalnya, DNS1 = [... akan diganti ....].

Saya mencoba:

sed -i 's/DNS1=*/DNS1="8.8.8.8"/' /etc/sysconfig/network-scripts/ifcfg-eth0

dan hasilnya adalah:

Sebelum: DNS1 = "10.10.2.2"

Setelah: DNS1 = "8.8.8.8" "10.10.2.2"

Apa yang saya lakukan salah ...

cHam
sumber

Jawaban:

2

Mencoba:

sed -i 's/DNS1=.*/DNS1="8.8.8.8"/' /etc/sysconfig/network-scripts/ifcfg-eth0

The *Operator berarti "sesuai dengan karakter sebelumnya 0 kali atau lebih". Dalam contoh Anda, karakter sebelumnya adalah =, karena itu akan cocok DNS1=dan tidak lebih, karena tidak ada lagi =karakter berurutan , dan ganti bagian itu dengan DNS1="8.8.8.8", yang menghasilkan string DNS1="8.8.8.8""10.10.2.2", seperti yang Anda katakan.

The .Operator berarti "setiap karakter" di sedkonteks, yang mungkin apa yang Anda inginkan di sini. Variasi itu akan cocok DNS1=dan kemudian "karakter 0 atau lebih banyak kali" hingga akhir baris dan kemudian ganti dengan DNS1="8.8.8.8".

Daniel Andersson
sumber
itu berhasil. Saya pikir itu sesuatu yang sederhana seperti itu, terima kasih.
cHam