Vim: sostituisce tutta la riga che inizia con la stringa con la riga


9

Su questo testo

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

Voglio sostituire tutte le linee che iniziano con hardware mac con

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

Ho provato

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

e dare errore

anche il classico comando vim

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

Ma cambia solo il mac hardware della stringa lasciando intatti i numeri. Come sostituire la stringa che inizia con l'hardware mac con la mia stringa?

Risposte:


14

Hai quasi capito bene, hai appena dimenticato di abbinare il resto della linea (on vim):

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

Puoi eliminare le gcopzioni alla fine se sei sicuro di ciò che stai facendo, gè probabile che non sia necessario poiché non combacerai più di una volta per riga.

Con sedesso è la stessa cosa:

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

Si noti che sedil comando di sostituzione snon accetta un cflag (conferma), come vimfa.


+1 FWIW gin /gcè ridondante, poiché questa regex può comunque corrispondere a una sola riga.
Sparhawk,

Stavo modificando la mia risposta mentre scrivevi questo commento (=
Kira

Si noti che quella sedsintassi è in stile GNU. Non tutte le versioni supportano -ie alcune richiedono un argomento.
Eric Renouf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.