Цикл по датам и времени
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2011-01-26 17:24:07
Цикл по датам и времени
Люди добрые, подскажите как создать цикл по датам и времени каждые 10 минут за определенный период?
Хочу разбить файл с кучей перемешанных данных во времени на файлы со следующими именами год-месяц-число-час-минуты.txt с промежутком в именах каждые 10 минут начиная например с 1 января этого года и до текущей даты
т.е. Как создать пустые файлы 2012-01-01-00-00.txt, 2012-01-01-00-10.txt, 2012-01-01-00-20.txt ... 2012-06-22-15-30.txt, 2012-06-22-15-40.txt? Не соображу, как сделать такой цикл? Список файлов должен быть непрерывным
Хочу разбить файл с кучей перемешанных данных во времени на файлы со следующими именами год-месяц-число-час-минуты.txt с промежутком в именах каждые 10 минут начиная например с 1 января этого года и до текущей даты
т.е. Как создать пустые файлы 2012-01-01-00-00.txt, 2012-01-01-00-10.txt, 2012-01-01-00-20.txt ... 2012-06-22-15-30.txt, 2012-06-22-15-40.txt? Не соображу, как сделать такой цикл? Список файлов должен быть непрерывным
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- старшина
- Сообщения: 427
- Зарегистрирован: 2008-10-03 18:52:02
Re: Цикл по датам и времени
Код: Выделить всё
remcomp% cat test.sh
#!/bin/sh
start_date="2012-06-01 00:00"
datecmd="/bin/date"
startfmt="%Y-%m-%d %H:%M"
filefmt="%Y_%m_%d_%H_%M"
file_ts="`$datecmd -jf "$startfmt" "$start_date" +"%s"`"
now_ts="`$datecmd +"%s"`"
while true
do
file_name="`$datecmd -jf "%s" "$file_ts" +"$filefmt"`.log"
echo $file_name
file_ts="`$datecmd -v+10M -jf "%s" "$file_ts" +"%s"`"
if [ $file_ts -ge $now_ts ]; then
break
fi
done
Код: Выделить всё
remcomp% ./test.sh > /tmp/out.dat
remcomp% head /tmp/out.dat
2012_06_01_00_00.log
2012_06_01_00_10.log
2012_06_01_00_20.log
2012_06_01_00_30.log
2012_06_01_00_40.log
2012_06_01_00_50.log
2012_06_01_01_00.log
2012_06_01_01_10.log
2012_06_01_01_20.log
2012_06_01_01_30.log
remcomp% tail /tmp/out.dat
2012_06_22_14_20.log
2012_06_22_14_30.log
2012_06_22_14_40.log
2012_06_22_14_50.log
2012_06_22_15_00.log
2012_06_22_15_10.log
2012_06_22_15_20.log
2012_06_22_15_30.log
2012_06_22_15_40.log
2012_06_22_15_50.log
remcomp%
-
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
- Контактная информация:
Re: Цикл по датам и времени
наваял тут на скорую руку (т.к. пора уходить с работы).
рисует диапазоны от начала этого года, до текущего времени.
думаю дальше разберешься, дальше сам
ЗЫ. некоторые вещи можно сделать красивее, но лень было замарачиваться
рисует диапазоны от начала этого года, до текущего времени.
думаю дальше разберешься, дальше сам
ЗЫ. некоторые вещи можно сделать красивее, но лень было замарачиваться
Код: Выделить всё
#!/bin/sh
cur_day=`date '+%j'`
cur_m=`date '+%M'`
cur_h=`date '+%H'`
cur_s=`date '+%S'`
cur_stamp=`date '+%s'`
cur_day=$(($cur_day-1))
secd=`echo "(${cur_day}*24*60*60)+((${cur_h}-1)*3600)+((${cur_m})*60)+${cur_s}" | bc -l`
stamp=`echo "$cur_stamp-$secd" | bc`
while [ $stamp -lt $cur_stamp ];
do
fname=`date -r $stamp '+%Y%m%d%H%M'`
echo $fname
stamp=$(($stamp+600))
done
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Цикл по датам и времени
Если обобщить вышесказанное, имеем:
script.sh
Пример выполнения:
script.sh
Код: Выделить всё
#!/bin/sh
datecmd="/bin/date"
begin="${1}"
end="${2}"
# формат границ промежутка
f_limit="%Y%m%d%H%M"
# формат имени файла
f_out="+%Y-%m-%d-%H-%M.log"
# интервал в секундах
r_interval=600
r_begin=`${datecmd} -j -f "${f_limit}" "${begin}" "+%s"`
r_end=`${datecmd} -j -f "${f_limit}" "${end}" "+%s"`
r_current=${r_begin}
while [ ${r_current} -le ${r_end} ]
do
file_name=`${datecmd} -r ${r_current} "${f_out}"`
echo ${file_name}
r_current=`expr ${r_current} + ${r_interval}`
done
Код: Выделить всё
sh ./script.sh 201206232250 201206232340
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2011-01-26 17:24:07
Re: Цикл по датам и времени
kpp, rayder, rmn Большое спасибо! Буду разбираться со всеми вариантами
-
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2011-01-26 17:24:07
Re: Цикл по датам и времени
Возможно кому-то пригодится вариант под linux (немного другие ключи)
Код: Выделить всё
cur_stamp=`date '+%s'`
stamp=`date -d "2012-05-01 00:00:00" '+%s'`
while [ $stamp -lt $cur_stamp ];
do
dname=`date -d @$stamp '+%Y-%m-%d-%H-%M.log'`
echo $dname
stamp=$(($stamp+600))
done
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Цикл по датам и времени
Уточнять нужно, уважаемый mmvds, под какую ОС нужен скрипт.
Если ОС явно не указана - значит FreeBSD.
Если ОС явно не указана - значит FreeBSD.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2011-01-26 17:24:07
Re: Цикл по датам и времени
Я и не в претензии, наоборот очень помогли
-
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
- Контактная информация:
Re: Цикл по датам и времени
я бы сказал "направили на путь истинный в сторону `date`" )
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.