Bash에서 지난주 숫자 가져오기

Bash에서 지난주 숫자 가져오기

매월 첫째 주에 대한 번호가 필요합니다.

3월 둘째주에는 전주가 1이 됩니다. 4월 첫째주에는 그 전 주가 5가 됩니다.

나의 일주일은 월요일부터 시작된다.

WEEK=$(( 1 + $(date +%V) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%V) ))

이전 주의 값을 얻기 위해 여기에서 1을 빼려면 어떻게 해야 합니까(해당 주가 1이면 예외가 있으므로 신경 쓸 필요가 없습니다).

2월이 4주밖에 안남았음을 자동으로 인식하면 좋을 것 같습니다.

답변1

제 기억이 맞다면 (여기서 약간 재구성한) 귀하의 표현식은 해당 월의 1일에 해당하는 주 번호, 오늘에 해당하는 주 번호를 찾아 그 차이를 월별 주 번호로 계산합니까?

first=$(date -d "-$(($(date +%d)-1)) days")
weekofmon=$(( 1 + $(date +%V) - $(date -d "$first" +%V) ))

이것이 정확하고 지난 주의 달을 원할 경우 "오늘"을 "7일 전"(모든 곳)으로 바꾸면 그와 동일한 날짜를 얻을 수 있습니까?

now="7 days ago"
first=$(date -d "$now - $(($(date +%d -d "$now" )-1)) days")
weekofmon=$(( 1 + 10#$(date +%V -d "$now") - 10#$(date -d "$first" +%V) ))

date"7일 전 - 3일"과 같은 표현을 구문 분석할 수 있어야 합니다 . date +%V주 번호 < 10을 앞에 0으로 인쇄하면 8진수로 해석되어 08합계가 깨집니다 09. 10#bash가 십진수를 사용하도록 강제하기 위해 추가되었습니다 .

같은 달의 첫날을 얻는 더 짧은 방법:

first=$(date -d "$now" +"%Y-%m-01") 

(형식은 다르지만 date설명이 가능해야 합니다.)

관련 정보