Intereting Posts
Как изменить цикл for? systemd – устройство umount после службы, которое зависит от его завершения Отсутствие сетевого / беспроводного соединения после перенастройки – «network UNCLAIMED» Вилка / Невозможно выделить память Как изменить пароль root по умолчанию для Live Kali Linux – постоянство USB vim: команда для удаления точки с запятой, если это последний символ строки Как сделать автоматическое измерение времени загрузки для свежих изображений? Функциональность Mac Command + Up arrow в терминалах Linux? Как использовать команду tar Unix с неявным пути к файлу? Множество LUN за раздел или один LUN со многими разделами Пытался разрастить мой массив raid6 с новым диском, получил «Не удалось восстановить критический раздел» сервер pypi, настройка для автоматической загрузки пакетов с клиента? настройка scp и umask Проблемы с OpenGL и Nvidia с Manjaro после настройки параметров настройки Как получить текущий путь без последней папки в скрипте?

Удалите 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 ... 

POSIXLY:

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

3-е место: за ним следует пространство, которое делает его другим для других!

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

Решение awk:

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

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

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