После неожиданной перезагрузки сервера (и как оказалось заломанной синхре по ntp), в логи стала писаться некорректная дата (2010й год,всё остальное тоже неправильное).
Но логи пишет не один сервер, поэтому часть записей идёт с правильным timestamp'ом.
Как оптимально можно исправить дату? Логов несколько гигабайт, представляют собой текстовый файл с разделителями (запятые), дата находится в 9м поле:97,8343434,,1309:17.9,026543,17,,,20100521220506,2097841,0,,Z5,,751,,02,60,test,,ZZZ,FBDSB181,,,,,,,12,,143,,,213,,,,xx6:1|348,13.2,,,,,,,,,,,,
Я посчитал смещение в секундах для каждой записи, но дальше возникло 2 вопроса:
1) как пересчитать дату в текущем формате (+%Y%m%d%H%M%S).
Переводить каждый раз дату вида 20100521220506 в вид 2010-05-21 22:05:06 понимаемый date не очень оптимально и красиво
2)не совсем представляю как воткнуть пересчёт даты в sed или awk - в sed не могу завязаться на номер поля, в awk очень изощренно выглядят вызовы внешних команд и внешних переменных.
В идеале это наверно выглядело бы как то так:
cat logfile | awk -F, '$9 ~ /2010/{$9=(date --date='123 seconds + $9' +%Y%m%d%H%M%S)$9}{print}' >> corrected_logfile
могу помочь со скриптом на python для корректировки даты.
> могу помочь со скриптом на python для корректировки даты.Я питон совсем не знаю, но на войне все средства хороши, поэтому буду рад любой помощи.
ОС - SLES10, в стандартной поставке идёт python 2.4.2, если это имеет значение.
Обновлять ничего нельзя.
>> могу помочь со скриптом на python для корректировки даты.
> Я питон совсем не знаю, но на войне все средства хороши, поэтому
> буду рад любой помощи.
> ОС - SLES10, в стандартной поставке идёт python 2.4.2, если это имеет
> значение.
> Обновлять ничего нельзя.питон тем и хорош что синтаксис минималистический - если писали на бейсике или паскале в школе-институте - то питон ещё даже проще:)
нужно:
1) пример некорректного файла - строк - от 100 чтобы было
2) что должно быть в итоге
3) да и ещё как должен принимать название файла скрипт - через командную строку, через конфиг или прямо в коде скрипта будет задаваться файл
4) файл всегда будет 1 или это будет набор файлов в директории или по маске?т.е. например в поле номер 9 есть строка 20101201 - нужно преобразовать в 2010-12-01.
лучше выслать на почту sm00th1980@mail.ru
> лучше выслать на почту sm00th1980@mail.ruзаслал