После неожиданной перезагрузки сервера (и как оказалось заломанной синхре по 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