Grepping последние 5 минут журнала

Если вы думаете, что многие другие, к сожалению, mysql-workbench не является хорошим и простым инструментом для быстрого и точного, вы можете установить предыдущие удаленные инструменты непосредственно из репозитория вручную. Вам просто нужно загрузить и установить следующие .deb-пакеты:

https://launchpad.net/ubuntu/precise/amd64/mysql-gui-tools-common/5.0r14+openSUSE-2.2ubuntu2 https : //launchpad.net/ubuntu/precise/amd64/libmysqlclient16/5.1.58-1ubuntu5 launchpad.net/ubuntu/precise/amd64/mysql-query-browser/5.0r14+openSUSE-2.2ubuntu2 launchpad.net/ubuntu/precise /amd64/mysql-admin/5.0r14+openSUSE-2.2ubuntu2

Конечно, это для архитектуры amd64, поскольку i386 просто меняет ссылку.

1
задан 22 June 2017 в 11:31

1 ответ

Если ваша дата / время была структурирована yy-mm-dd hh: mm: ss вместо первого дня, тогда вы можете выполнить сравнение строк для фильтрации по линиям после указанной даты. Для переформатирования использования данных

sed 's/\(..\)-\(..\)-\(..\)\(.*\)/\3-\2-\1\4/' log > log.reformatted

Затем вы можете использовать awk для печати строк после заданной даты и времени, объединяя их вместе, например

awk '$1 " " $2 >= "17-06-22 06:40:00"' log.reformatted

. Использование даты получить время 30 минут назад хорошо - просто измените его в формате year-month-day. Вам не нужно действие print $ 0, так как это подразумевается, если не указано никаких действий.

Обратите внимание, что я предполагаю, что «grepping» означает использование инструментов Unix для фильтрации желаемого подмножества доступных data.

Исходная ошибка, вероятно, связана с пробелом между датой и временем, так что аргумент -v получает только дату, а время отображается как отдельный аргумент, запутывающий awk. Чтобы решить эту проблему, используйте формат %H, а не %k (так как ваш формат журнала равен 2-значному часу), и удалите пространство между днем ​​и часом (в качестве упрощенного решения проблемы). Тогда все решение становится:

sed 's/\(..\)-\(..\)-\(..\)\(.*\)/\3-\2-\1\4/' log | awk -v date=$(date -d "30 minutes ago" +"%y-%m-%d%H:%M:%S") '$1$2 >= date'
0
ответ дан 24 July 2018 в 19:45
  • 1
    Я использую теперь: sed -n "/ $ (date" +% d-% m-% y ") /, \ $ p & quot; log, но в результате у меня есть все данные за текущий день. Добавлено% H:% M:% S, но не работает sed -n "/ $ (дата" +% d-% m-% y% H:% M:% S ") /, \ $ p & quot; журнал – Oleksii 22 June 2017 в 13:42
  • 2
    sed будет работать только в точном совпадении - он не предоставит вам «больше», которую вы хотите. awk может это сделать. В примерах sed вы получите каждую строку для определенной даты или для определенной секунды. Другая проблема с этим подходом заключается в том, что ваше стартовое время 31-05-17 23:59:59 оно не будет соответствовать по линиям 01-06-17 00:00:00 и т. Д. – Jeffrey Ross 22 June 2017 в 23:08

Другие вопросы по тегам:

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