Задать вопрос
@YaroslavKleyno

Нужна помощь с awk — напишите регулярку для парсинга файла?

Добрый день! Стоит простая задача. Есть консольный клиент телеграма - нужно через awk парсить его логи для вебморды.
Вот какие логи он ведет:

05 Mar 18 19:33 EET 23670 382477216 Клейно Ярослав to 224615209 Hermelin Nerz: чтото происходит
05 Mar 18 19:33 EET 23671 382477216 Клейно Ярослав to 224615209 Hermelin Nerz: пиши мне пиши))
05 Mar 18 19:33 EET 23672 224615209 Hermelin Nerz to 382477216 Клейно Ярослав: О.о
05 Mar 18 19:33 EET 23673 224615209 Hermelin Nerz to 382477216 Клейно Ярослав: Что такое
05 Mar 18 19:33 EET 23674 382477216 Клейно Ярослав to 224615209 Hermelin Nerz: спасибо
05 Mar 18 19:33 EET 23675 382477216 Клейно Ярослав to 224615209 Hermelin Nerz: я тестирую
05 Mar 18 19:33 EET 23676 224615209 Hermelin Nerz to 382477216 Клейно Ярослав: Всё ещё не вышло?

Отсюда нам нужно
19:33 Hermelin Nerz: Всё ещё не вышло?

Я парсю так:

cat /home/yaroslav/screen.log | grep Hermelin | awk '{print $4, $8, $14 $15 $16 $17 $18}'

но в итоге получается

19:33 Hermelin Всёещёневышло?

как добавить пробелы в сообщение?
  • Вопрос задан
  • 572 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
3vi1_0n3
@3vi1_0n3
Может sed всё-таки?
sed ./screen.log -nre 's/.*([0-9]{2}[:][0-9]{2}).*(Hermelin Nerz) to.*:(.*)/\1 \2:\3/p'

На выходе будет:
19:33 Hermelin Nerz: О.о
19:33 Hermelin Nerz: Что такое
19:33 Hermelin Nerz: Всё ещё не вышло?

для всех:
sed ./screen.log -nre 's/.*([0-9]{2}[:][0-9]{2}).* (.+ .+) to.*:(.*)/\1 \2:\3/p'

На выходе:
19:33 Клейно Ярослав: чтото происходит
19:33 Клейно Ярослав: пиши мне пиши))
19:33 Hermelin Nerz: О.о
19:33 Hermelin Nerz: Что такое
19:33 Клейно Ярослав: спасибо
19:33 Клейно Ярослав: я тестирую
19:33 Hermelin Nerz: Всё ещё не вышло?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@GorodokVVV
Так awk прекрасно вставляет пробелы между полями при помощи " " (пробел между кавычками), зачем еще и sed подключать?
Выглядеть строка будет так:
awk '{print $4, $8, $14 " " $15 " " $16 " " $17 " " $18}'
Почитайте эту статью.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы