![day1부터 dayN까지의 날짜 열을 포함하는 데이터 파일을 만드는 방법은 무엇입니까?](https://linux55.com/image/45956/day1%EB%B6%80%ED%84%B0%20dayN%EA%B9%8C%EC%A7%80%EC%9D%98%20%EB%82%A0%EC%A7%9C%20%EC%97%B4%EC%9D%84%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
과거 특정 연도부터 가장 최근 또는 오늘까지 열의 시간별 또는 일별 시간 단계 날짜를 생성할 수 있는지 궁금합니다. 좀 더 명확히 하기 위해 2000-10-10 100부터 2012-12-31 2400까지의 데이터 열을 만들고 싶습니다. 출력 파일은 다음과 같습니다
Date
2000-01-01 100
2000-01-01 200
2000-01-01 300
.
.
.
.
.
2012-12-31 2400
답변1
#!/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
답변2
그리고 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를 시계로 사용하는 시간대에 있는 경우 일부 시간은 건너뛰거나 두 번 출력됩니다.
100부터 2400까지가 아니라 000부터 2300까지 계산합니다.
답변3
문제를 이해하기가 더 쉬워지기 때문에 다음의 작은 스크립트도 비슷한 작업을 수행할 수 있습니다.
#!/bin/bash
i=1
c=100
while ((c>i))
do
echo "$(date +%F)" $c >> thisfile
sleep 5
echo "$(date +%F)" $((c+=100))
done
이것이 자명하기를 바랍니다.
나는 사용했지만 sleep 5
정확히 매 시간마다 이 줄을 생성하려면 다음과 같은 것을 사용할 수 있습니다.sleep $((60*60))