Vim: reemplace todas las líneas que comienzan con una cadena con una línea

9

En este texto

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

Quiero reemplazar todas las líneas que comienzan con hardware mac con

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

Yo he tratado

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

y dar error

También el clásico comando vim

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

Pero cambie solo el mac de hardware de cadena dejando los números intactos. ¿Cómo reemplazar la cadena que comienza con hardware mac con mi cadena?

elbarna
fuente

Respuestas:

14

Casi acertó, simplemente olvidó hacer coincidir el resto de la línea (en vim):

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

Puede descartar las gcopciones al final si está seguro de lo que está haciendo, ges probable que sea innecesario ya que no coincidirá más de una vez por línea.

Con sedesto es lo mismo:

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

Tenga en cuenta que sedel comando de sustitución sno acepta un cindicador (confirmar), como lo vimhace.

Kira
fuente
1 Fwiw el gen /gces redundante, ya que esta expresión regular sólo puede coincidir con uno por línea de todos modos.
Sparhawk
Estaba editando mi respuesta mientras escribías este comentario (=
Kira
Tenga en cuenta que esa sedsintaxis es estilo GNU. No todas las versiones son compatibles -iy algunas requieren un argumento.
Eric Renouf