Vim: ganti semua baris yang dimulai dengan string dengan garis


9

Pada teks ini

hardware mac 33:33:333:33:33
hardware mac 33:13:333:33:33
hardware mac 33:23:333:23:34
hardware mac 33:033:133:33:35
...

Saya ingin mengganti semua baris dimulai dengan mac perangkat keras dengan

hardware mac 00:00:00:00:00:00

saya telah mencoba

sed s/^hardware mac/hardware mac 00:00:00:00:00:00/gc

dan memberi kesalahan

juga perintah vim klasik

%s:/^hardware mac/hardware mac 00:00:00:00:00:00/gc

Tetapi hanya mengubah mac hardware string yang membiarkan angka-angka tidak tersentuh. Bagaimana cara mengganti string yang dimulai dengan mac perangkat keras dengan string saya?

Jawaban:


14

Anda hampir melakukannya dengan benar, Anda hanya lupa untuk mencocokkan sisa baris (pada vim):

:%s/^hardware mac.*/hardware mac 00:00:00:00:00:00/gc

Anda dapat menjatuhkan gcopsi di akhir jika Anda yakin dengan apa yang Anda lakukan, gkemungkinan tidak perlu karena Anda tidak akan cocok dengan lebih dari sekali per baris.

Dengan seditu adalah hal yang sama:

sed -i 's/^hardware mac.*/hardware mac 00:00:00:00:00:00/' filename

Perhatikan bahwa sedperintah substitusi stidak menerima cbendera (konfirmasi), seperti vimhalnya.


+1 FWIW gin /gcadalah redundan, karena regex ini hanya bisa cocok dengan satu per baris.
Sparhawk

Saya sedang mengedit jawaban saya saat Anda menulis komentar ini (=
Kira

Perhatikan bahwa sedsintaks adalah gaya GNU. Tidak semua versi mendukung -idan beberapa memerlukan argumen untuk itu.
Eric Renouf
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.