Eliminar el enésimo carácter especificado de una línea

Eliminar el enésimo carácter especificado de una línea

Tengo un archivo de registro con líneas como esta:

06:06:48.531 9: 157 2492
06:06:49.331 10: 147 2812
...

necesito eliminarsolola tercera ':' en todas las líneas, de modo que el resultado sería:

06:06:48.531 9 157 2492
06:06:49.331 10 147 2812
...

Respuesta1

POSIXLY:

sed -e 's/://3' <file

Respuesta2

El tercer ':' va seguido de un espacio, ¡lo que lo hace diferente a los demás!

sed -i 's/: / /g' logfile

Respuesta3

Una solución extraña:

awk '{ print(gensub(/:/,"",3,$0)) }' logfile

Respuesta4

La versión larga (usando un método que puede ser muy útil cuando uno se cansa y no quiere pensar demasiado...):

sed -e 's/\([^:]*\):\([^:]*\):\([^:]*\):/\1:\2:\3/'

información relacionada