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 ...

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".


itu berhasil. Saya pikir itu sesuatu yang sederhana seperti itu, terima kasih.
cHam
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.