Reemplazando. * En vi

Necesito reemplazar todas las apariciones de «punto asterisco» como se muestra aquí:

blah blah .*:.*:.* blah blah 

con:

[0-9][0-9]:[0-9][0-9]:[0-9][0-9] 

para que el resultado final se vea así:

blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah 

Probé diferentes variaciones de lo siguiente pero no funcionó:

%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g 

Respuesta

Dio un ejemplo de una línea con un «punto asterisco» repetido tres veces, separados por dos puntos. Si sus datos siempre se verán así, también puede seguir con Respuesta de AlexP . Pero su pregunta dice que debe reemplazar todas las apariciones de «punto asterisco». Si esa declaración de el problema es exacto, debe usar

:%s/\.\*/[0-9][0-9]/g 

que buscará y reemplazará el «punto asterisco» incluso cuando no aparezca en grupos de tres.

Respuesta

Para Vim:

Para sed: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g".

  • % significa aplicar la sustitución en todas las líneas; no es necesario en sed donde por defecto el comando se aplica a todas las líneas.
  • \. es un punto; un . desnudo significa cualquier carácter.
  • \* es un asterisco; un * desnudo significa 0 o más del átomo anterior.

Respuesta

Usando el nomagic modificador para el patrón en Vim:

:%s/\M.*/[0-9][0-9]/g 

El \M eliminará la especialidad de . y * en el patrón.

Consulte :help magic en Vim.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *