Remove o enésimo caractere especificado de uma linha

2

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 remover somente o terceiro ': ' em todas as linhas, para que o resultado seja:

06:06:48.531 9 157 2492
06:06:49.331 10 147 2812
...
    
por fduff 01.11.2015 / 12:26

4 respostas

3

POSIXLY:

sed -e 's/://3' <file
    
por 18.02.2016 / 18:27
1

o terceiro ':' é seguido pelo espaço, o que o torna diferente dos outros!

sed -i 's/: / /g' logfile
    
por 01.11.2015 / 12:42
1

Uma solução awk:

awk '{ print(gensub(/:/,"",3,$0)) }' logfile
    
por 01.11.2015 / 16:03
1

A versão longa (usando um método que pode ser muito útil quando se está cansado e não quer pensar muito ...):

sed -e 's/\([^:]*\):\([^:]*\):\([^:]*\):/::/'
    
por 01.11.2015 / 17:48

Tags