bash + grep только отметка времени из вывода

awkрешение:

awk -F, '$3!~/^[[:space:]]*$/' file

Выход:

x, xx, xxx, xxxx,,,,

  • -F,-разделитель полей

  • $3!~/^[[:space:]]*$/-учитываются только те строки, в которых не -пусто 3-е поле (не состоит из пробелов)

0
15.07.2019, 03:24
1 ответ

Вероятно, временная часть линии наиболее стабильна, если вас интересуют другие часовые пояса. Вероятно, тогда также будет небезопасно искать имена месяцев и дней.

РЕДАКТИРОВАТЬ :сделал шаблон немного более точным, чтобы не совпадать с частями IP-адресов и тому подобное (шаблон может не совпадать до и после цифры или двоеточия ).

Итак, если вы попытаетесь найти время, вы можете сделать:

grep "\([^[^0-9:]\|^\)[0-9]\{1,2\}\(:[0-9]\{2\}\)\{2\}\([^[^0-9:]\|$\)"

С некоторыми тестовыми данными, как указано выше:

grep " ([^[^0 -9 :]\|^ )[0 -9]{1,2} (:[0 -9]{ 2} ){2} ([^[^0 -9 :]\|$ )" << КОНЕЦ Вс 14 июля 12 :47 :49 UTC 2019 какое-то сообщение адрес был 01 :11 :91 :05 Вс 14 июля 12 :47 :49 UTC 2019 01 :11 :91 :05 был адрес это не правильное время 123 :23 :03 это тоже не 1 :3 :43 и ни его 12 :33 :27 :Вс 14 июля 12 :47 :49 UTC 2019 КОНЕЦ

выводит:

Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019

Требуются три числовые части, разделенные символом :, первая может состоять из 1 -2 цифр, а две другие должны состоять из 2 цифр.

1
28.01.2020, 02:39

Теги

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