как создать файл данных со столбцом даты от day1 до dayN?

MD5SUM или SHA1SUM могут добиться цели.

Проблема затем состоит в том, что или необходимо вычислить контрольную сумму на сервере, на который Вы загружаете или загружаете файл с сервера и выдерживаете сравнение. Но это могло также означать, что не было загружено правильно...

4
30.09.2013, 20:35
3 ответа
#!/bin/bash

day=2000-01-01
end=2012-12-31

echo Date > output.file

until [[ $day > $end ]]; do
    printf "$day %d\n" $(seq 100 100 2400)
    day=$(date -d "$day + 1 day" +"%Y-%m-%d")
done >> output.file
10
27.01.2020, 20:46

С ksh93:

d1=$(printf '%(%s)T\n' "2000-01-01 01:00:00")
d2=$(printf '%(%s)T\n' "2013-01-01 00:00:00")
for ((d=d1;d<d2;d+=3600)); do
  printf '%(%F %-H%M)T\n' "#$d"
done

С zsh:

zmodload zsh/datetime
strftime -rs d1 '%Y%m%d%H%M' 201201010100
strftime -rs d2 '%Y%m%d%H%M' 201301010000
for ((d=d1;d<d2;d+=3600)) strftime '%F %-H%M' $d

С perl:

perl -MPOSIX -le '
  $d1=mktime 0,0,1,1,0,100;$d2=mktime 0,0,0,1,0,113;
  for ($d=$d1; $d<$d2; $d+=3600) {
    print strftime "%F %-H%M", localtime $d}'

С GNU awk:

awk 'BEGIN {d1=mktime("2000 01 01 01 00 00")
            d2=mktime("2013 01 01 00 00 00")
            for (d=d1;d<d2;d+=3600)
              print strftime("%F %-H%M",d)}'

Обратите внимание, что со всем вышеупомянутым во время изменения DST несколько часов будут пропущены или произведены дважды, если в часовом поясе с DST, поскольку часы были бы.

Мы рассчитываем от 000 до 2 300 вместо 100 - 2 400.

3
27.01.2020, 20:46
  • 1
    Спасибо за Ваш ответ, это имеет некоторую ошибку при выполнении. Вот ошибка awk: строка 5: функционируйте strftime, никогда не определял awk: строка 5: функционируйте mktime, никогда не определял awk: строка 5: функционируйте mktime никогда не определяемый –  AiB 29.08.2013, 01:03
  • 2
    @Abraham - проверяют его дважды, я просто копирую/вставляю его в терминал, и это хорошо работало. –  slm♦ 29.08.2013, 01:21
  • 3
    @Stephane-I не знает, это все еще не работает на меня. Тот же ошибочный массаж. –  AiB 29.08.2013, 03:34
  • 4
    #!/bin/bash awk 'НАЧИНАЕТСЯ {d1=mktime ("2000 01 01 01 00 00") d2=mktime ("2013 01 01 00 00 00") для (d=d1; d <d2; d + = 3600), печатают strftime (" %F %-H%M", d)}' –  AiB 29.08.2013, 03:34
  • 5
    @Abraham, как я сказал, Вам нужен GNU awk. Это - конкретный GNU, он не будет работать ни с каким другим awk. –  Stéphane Chazelas 29.08.2013, 13:02

Так как вопрос стал более понятным, следующий небольшой сценарий мог сделать что-то подобное.

#!/bin/bash

i=1
c=100

while ((c>i))
    do
    echo "$(date +%F)" $c >> thisfile
    sleep 5
    echo "$(date +%F)" $((c+=100))
    done

Я надеюсь, что это сам объяснительное

Я использовал a sleep 5 но получить точно эту строку каждый час генерировало Вас, может использовать что-то как sleep $((60*60))

2
27.01.2020, 20:46
  • 1
    сначала я хочу поблагодарить Вас. Я запускаю скрипт и видел результат. Проблема была, она не перешла к следующему дню после того, как 24 часа, скорее в только запускается с сегодняшнего дня в 100, и продолжите к nX100 в течение того же дня. То, что я хочу, генерируют файл данных даты, почасовый временной интервал, запуск с января 2000 в 100-часовом, до декабря 2012 в 2400-часовом.Спасибо! –  AiB 28.08.2013, 23:14

Теги

Похожие вопросы