반달가면 이글루에서 백업 - http://bahndal.egloos.com/592720
예를 들어 2016년 10월 1일부터 2017년 2월 5일까지의 날짜를 연속으로 출력하는 방법이다. 시작 날짜와 종료 날짜의 형태를 년(4자리)월(2자리)일(2자리) 이렇게 정하면(예: 2016년 10월 1일 -> 20161001) 조건문에서 일반 수자처럼 대소 비교를 할 수 있으므로 while 반복문과 date를 조합하여 스크립트를 만들 수 있다. 아래의 예시를 보자.
# 시작 날짜 2016년 10월 1일
start_date="20161001"
# 종료 날짜 2017년 2월 5일
end_date="20170205"
# cur_date 변수 초기값 설정(시작 날짜)
cur_date="$start_date"
# 종료 날짜까지 반복
while [[ $cur_date -le $end_date ]]
do
# 날짜 출력
date -d "$cur_date" "+%Y년 %m월 %d일"
# cur_date 변수 갱신
cur_date=`date -d "$cur_date + 1 day" "+%Y%m%d"`
done
변수 cur_date의 날짜값이 종료 날짜인 end_date보다 작거나 같으면 while 반복문이 유효하므로 해당 기간 동안 날짜 출력이 반복된다. cur_date의 날짜값은 date의 -d 옵션을 이용하여 갱신. -d 옵션에 대한 내용은 이전 게시물을 참고하자. 여기로
위의 스크립트를 기본으로 필요에 따라 응용을 해 볼 수 있다. 예를 들어 시작 날짜부터 3일 간격으로 날짜를 출력하고 싶다면 위의 예시에서 cur_date 변수를 갱신하는 부분을 아래와 같이 바꾸면 된다.
cur_date=`date -d "$cur_date + 3 days" "+%Y%m%d"`
'bash script' 카테고리의 다른 글
[bash: sed] 특정한 문자열이 포함된 행 삭제하기 (0) | 2023.07.28 |
---|---|
[bash: awk] 일반 시간을 타임스탬프(timestamp)로 변환하기 (mktime) (0) | 2023.07.27 |
[bash: awk] awk에서 영역 구분을 이용한 문자열 재구성 작업 (gensub) (0) | 2023.07.25 |
[bash: sed] 대용량 파일에서 특정 위치의 행만 출력하기 (0) | 2023.07.25 |
[bash: awk] 다중 문자열 검색 - 2 (0) | 2023.07.25 |