Remova o enésimo caractere especificado de uma linha

Remova o enésimo caractere especificado de uma linha

Eu tenho um arquivo de log com linhas como esta:

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

Eu preciso removerapenaso 3º ':' em todas as linhas, de modo que o resultado seria:

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

Responder1

POSIXMENTE:

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

Responder2

o terceiro ':' é seguido de espaço, o que o torna diferente dos demais!

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

Responder3

Uma solução estranha:

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

Responder4

A versão longa (usando um método que pode ser muito útil quando a pessoa fica cansada e não quer pensar muito...):

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

informação relacionada