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