Удалить N-й указанный символ из строки

Удалить N-й указанный символ из строки

У меня есть файл журнала со строками вроде этих:

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

Мне нужно удалитьтолько3-й ':' по всем линиям, так что результат будет:

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

решение1

ПОСИКЛИ:

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

решение2

за третьим знаком «:» следует пробел, что отличает его от других!

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

решение3

Решение на awk:

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

решение4

Длинная версия (используя метод, который может быть очень полезен, когда устаешь и не хочешь слишком много думать...):

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

Связанный контент