Есть некий список с датами. Мне надо пересчитать даты (добавить некое значение в формате "Unix time"). Первоначально список выглядит так:
TS USER
.....
2014-12-02 22:00:00
2014-12-02 21:00:00
2014-12-02 21:00:00
2014-12-02 21:00:00
2014-12-02 20:00:00
2014-12-02 20:00:00
2014-12-02 20:00:00
2014-12-02 19:00:00
2014-12-02 19:00:00
2014-12-02 18:00:00
2014-12-02 18:00:00
2014-12-02 18:00:00
2014-12-02 18:00:00
2014-12-02 17:00:00
2014-12-02 17:00:00
2014-12-02 17:00:00
2014-12-02 17:00:00
2014-12-02 16:00:00
2014-12-02 16:00:00
2014-12-02 15:00:00
2014-12-02 15:00:00
2014-12-02 14:00:00
2014-12-02 14:00:00
2014-12-02 14:00:00
2014-12-02 14:00:00
2014-12-02 13:00:00
2014-12-02 12:00:00
2014-12-02 12:00:00
2014-12-02 12:00:00
2014-12-02 12:00:00
2014-12-02 11:00:00
2014-12-02 11:00:00
2014-12-02 02:00:00
2014-12-02 02:00:00
2014-12-02 02:00:00
2014-12-02 01:00:00
2014-12-02 01:00:00
2014-12-02 01:00:00
2014-12-02 00:00:00
2014-12-02 00:00:00
2014-12-02 00:00:00
2014-12-01 23:00:00
2014-12-01 23:00:00
2014-12-01 22:00:00
2014-12-01 22:00:00
2014-12-01 22:00:00
2014-12-01 22:00:00
2014-12-01 21:00:00
2014-12-01 21:00:00
2014-12-01 21:00:00
2014-12-01 20:00:00
2014-12-01 20:00:00
2014-12-01 20:00:00
2014-12-01 19:00:00
2014-12-01 19:00:00
2014-12-01 18:00:00
2014-12-01 18:00:00
2014-12-01 18:00:00
2014-12-01 18:00:00
2014-12-01 17:00:00
2014-12-01 17:00:00
2014-12-01 17:00:00
2014-12-01 16:00:00
2014-12-01 16:00:00
2014-12-01 16:00:00
2014-12-01 15:00:00
2014-12-01 15:00:00
2014-12-01 15:00:00
2014-12-01 15:00:00
2014-12-01 14:00:00
2014-12-01 14:00:00
2014-12-01 13:00:00
2014-12-01 13:00:00
2014-12-01 13:00:00
2014-12-01 12:00:00
2014-12-01 12:00:00
2014-12-01 12:00:00
2014-12-01 11:00:00
2014-12-01 11:00:00
2014-12-01 11:00:00
2014-12-01 10:00:00
2014-12-01 10:00:00
2014-12-01 10:00:00
2014-12-01 09:00:00
2014-12-01 09:00:00
2014-12-01 08:00:00
2014-12-01 08:00:00
2014-12-01 08:00:00
2014-12-01 08:00:00
2014-12-01 07:00:00
2014-12-01 07:00:00
...
для пересчета я использую скрипт:
date_dif=`cat ./date_dif.txt`
for myI in ./PERIOD
do
co1=0
while read line
do
case $line in
????-??-?????:??:*)
line=`echo "$line" | awk '{print $1 " " $2}'`
date_line_f[$co1]=$line
line=`date --date="$line" +%s`
let line=$line+$date_dif
line=`date --date=@$line +"%F %H:%M:%S"`
date_line_s[$co1]=$line
sed -i "s#${date_line_f[$co1]}#${date_line_s[$co1]}#" ./$myI
esac
let co1=$co1+1
done <./$myI
done
и получаю такую ерунду:
TS USER
2014-12-05 18:30:00
2014-12-05 18:30:00
2014-12-05 18:25:00
2014-12-05 18:20:00
2014-12-05 18:20:00
2014-12-05 18:15:00
2014-12-05 18:15:00
2014-12-05 18:10:00
2014-12-05 18:10:00
...
2014-12-04 04:00:00
2014-12-04 04:00:00
2014-12-04 04:00:00
2014-12-04 03:00:00
2014-12-04 03:00:00
2014-12-04 02:00:00
2014-12-04 02:00:00
2014-12-04 02:00:00
2014-12-04 02:00:00
2014-12-04 01:00:00
2014-12-04 01:00:00
2014-12-04 01:00:00
2014-12-04 00:00:00
2014-12-04 00:00:00
2014-12-04 00:00:00
2014-12-03 21:00:00
2014-12-03 20:00:00
2014-12-03 20:00:00
2014-12-03 20:00:00
2014-12-03 19:00:00
2014-12-03 19:00:00
!!!!!!!!!! ВМЕСТО 2014-12-03 18:00:00 пересчитало черти что...
2014-12-05 18:00:00
2014-12-05 18:00:00
2014-12-05 18:00:00
2014-12-05 18:00:00
2014-12-05 17:00:00
2014-12-05 17:00:00
2014-12-05 17:00:00
2014-12-05 16:00:00
2014-12-05 16:00:00
2014-12-05 16:00:00
2014-12-05 15:00:00
2014-12-05 15:00:00
2014-12-05 15:00:00
2014-12-05 15:00:00
2014-12-05 14:00:00
2014-12-05 14:00:00
2014-12-05 13:00:00
2014-12-05 13:00:00
2014-12-05 13:00:00
2014-12-05 12:00:00
2014-12-05 12:00:00
2014-12-05 12:00:00
2014-12-05 11:00:00
2014-12-05 11:00:00
2014-12-05 11:00:00
2014-12-05 10:00:00
2014-12-05 10:00:00
2014-12-05 10:00:00
2014-12-05 09:00:00
2014-12-05 09:00:00
2014-12-05 08:00:00
2014-12-05 08:00:00
2014-12-05 08:00:00
2014-12-05 08:00:00
2014-12-05 07:00:00
2014-12-05 07:00:00
2014-12-05 07:00:00
2014-12-05 06:00:00
2014-12-05 06:00:00
2014-12-05 06:00:00
2014-12-05 05:00:00
2014-12-05 05:00:00
2014-12-05 05:00:00
!!!!!!!!!!!!!!!!!!!!!!!!! А ТЕПЕРЬ ОПЯТЬ СЧИТАЕТ НОРМАЛЬНО????
2014-12-03 04:00:00
2014-12-03 04:00:00
2014-12-03 04:00:00
2014-12-03 03:00:00
2014-12-03 03:00:00
...
по началу, кажется, что всё верно (вырезал везде лишнии записи т.к. превышен был лимит). Даты пересчитаны с учетом date_diff разницы. Но листая можно заметить, вместо ожидаемого уменьшения даты идет такая ерунда
2014-12-03 19:00:00
2014-12-05 18:00:00 (должно было быть 2014-12-03 18:00:00)
потом испортив кусочек - скрипт делает в конце видимость, будто всё отработало верно. (вот момент
2014-12-05 05:00:00
2014-12-03 04:00:00
). Весь пересчитывающий дату скрипт указан выше. Вот седом я заменяю старое значение даты новым
sed -i "s#${date_line_f[$co1]}#${date_line_s[$co1]}#" ./$myI
в чем проблема - понять не могу! Как исправить?