У меня есть файл журнала, как это: (example.log)чтения журналов на основе текущего времени Stamp
2016-06-13 04:50:10.327 39571893 [Thread-39-a-b-c-bolt] INFO JobLoader c.t.c.i.i.b.abcBolt - Setting other variation theme
2016-06-13 04:50:10.327 39571893 [Thread-39-a-b-c-bolt] INFO JobLoader c.t.c.i.i.b.abcBolt - Stripping abc hierarchy
2016-06-13 04:50:10.328 39571894 [Thread-39-a-b-c-bolt] INFO JobLoader c.t.c.i.i.b.abcBolt - Transforming date attributes
2016-06-13 04:50:10.328 39571894 [Thread-39-a-b-c-bolt] INFO JobLoader c.t.c.i.i.b.abcBolt - Creating API object for incoming data
Теперь я только хочу, чтобы читать журналы последних 4 часа (не последние 4 часа от последнего журнала но последние 4 часа от текущего системного времени, может быть 0 журналов, но затем должен быть создан пустой файл) и хранить журналы (в точности без изменений) в отдельном файле. Могу ли я просто сравнить временную метку, или мне нужно извлечь час, минуту и секунду и применить логику?
Моя попытка:
x=$((4*3600))
current = date
awk -F 'JobLoader' -v current=$current -v x=$x '{ ______ | getline d; if (current-d<=x)print $0 }' example.log > output.txt
У меня возникли проблемы о том, как Grep текущее время текущего журнала и является ли я могу сравнить, как я сделал?
Фактически у меня есть непрерывная операция с журналами, чтобы сделать i.e извлечение 16-го и 20-го полей в отдельный файл. Я делаю это на основе предложений:
awk ' {
cutoff=$(date -d "now -4 hours" +%s)
date=$(cut -c1-19 <<<"$line")
ts=$(date -d "$date" +%s)
if [ $cutoff -le $ts ]; then
print $3
fi
} ' /home/example.log >> output.txt
Но я получаю сообщение об ошибке, как:
awk: cmd. line:2: cutoff=$(date -d "now -4 hours" +%s)
awk: cmd. line:2: ^syntax error
awk: cmd. line:3: date=$(cut -c1-19 <<<"$line")
awk: cmd. line:3: ^syntax error
awk: cmd. line:4: ts=$(date -d "$date" +%s)
awk: cmd. line:4: ^syntax error
awk: cmd. line:5: if [ $cutoff -le $ts ]; then
awk: cmd. line:5: ^syntax error
Что я делаю неправильно здесь? Пожалуйста, предложите решение, основанное только на awk. Я не могу использовать sed и т. Д.
У вас есть попытки решить проблему? Это поможет определить необходимость в контексте и предложить, какие инструменты вы хотите использовать ('awk',' grep' и т. Д.). – bishop
@bishop: Я пробовал выше. Но как сказал, не получив, чтобы заполнить там? –
Будет ли каждая строка начинаться с даты, или у вас есть стек или другой многострочный вывод? –