서로 다른 두 날짜 사이의 날짜를 인쇄하는 방법

서로 다른 두 날짜 사이의 날짜를 인쇄하는 방법

서로 다른 두 날짜(예: 시작 날짜와 두 날짜) 사이의 날짜를 인쇄하고 싶습니다.

시작 날짜가이고 2013-09-05종료 날짜가 2013-09-10다음인 경우 결과를 원합니다.

2013-09-05
2013-09-06
2013-09-07
2013-09-08
2013-09-09 
2013-09-10 

.....등

월말과 초에 올바른 날짜가 인쇄되어야 합니다.

답변1

가장 쉬운 방법은 date명령을 사용하는 것입니다. UNIX 세계에서는 날짜가 다음 단위로 측정됩니다.에포크 이후 초. 날짜를 초로 변환하면 이를 사용하여 date관심 있는 날짜를 인쇄할 수 있습니다.

END=$(date -d "2013-09-10" +%s);
DATE=$(date -d "2013-09-05" +%s); 
while [[ "$DATE" -le "$END" ]]; do date -d "@$DATE" +%F; let DATE+=86400; done

이것을 터미널에 복사/붙여넣으면 반환됩니다.

2013-09-05
2013-09-06
2013-09-07
2013-09-08
2013-09-09
2013-09-10

관련 부분 man date:

   -d, --date=STRING
          display time described by STRING, not 'now'

   %F     full date; same as %Y-%m-%d

답변2

GNU 사용 grep:

grep -A5 "2013-09-05" file

사용 awk:

awk '/2013-09-05/,/2013-09-10/{print}' file

사용 sed:

sed -n '/2013-09-05/,/2013-09-10/p' file

또는 주석을 읽고 GNU를 사용하십시오 date.

start=2013-09-05 
end=2013-09-11
   while [[ $start < $end ]] 
     do 
      printf "$start\n"; start=$(date -d "$start + 1 day" +"%Y-%m-%d") 
     done

관련 정보