awk에서 해당 월의 마지막 날 값을 얻는 방법

awk에서 해당 월의 마지막 날 값을 얻는 방법

~에 따르면협회마지막 날을 보려면 다음 명령을 사용하십시오 date.

$ date -d "-$(date +%d) days -1 month"
Wed May 31 21:20:31 CEST 2017

내 질문은, 어떻게 얻을 수 있습니까?오직 일을 지정하고 나중에 사용할 변수에 할당합니다.

awk '{day=system("date -d \"-$(date +%d) days -1 month\")"; print day)}' 

예를 들어 인쇄하늘출력만 됩니다31. 날짜 형식의 형식을 지정해야 한다는 것은 알고 있지만 마지막 날만 인쇄하는 방법을 모르겠습니다.

awk또는 작업을 완료할 수 있는 또 다른 더 쉬운 방법이 있는 경우 .

편집하다 매우 더러운 해결 방법 ..

$ awk '{a=system("date -d \"-$(date +%d) days -1 month\"| cut -f 3 -d \" \""); }END{print a}'

31

더 간단하고 깔끔한 아이디어를 갖고 있는 사람이 있나요?

답변1

마지막 날현재의월은 다음과 같아야 합니다.

$ date -d "$(date +%Y-%m-01) +1 month -1 day"
Mon Jul 31 00:00:00 CEST 2017

나의 가장 짧은 것:

awk '{a=system("date -d \"$(date +%Y-%m-01) +1 month -1 day\" +%d")}END{print a}'

답변2

외부 호출을 하려면 형식 문자열을 사용하세요 date.

$ date -d "-$(date +%d) days +1 month" +%d
31

답변3

lastday=$(cal 07 2017|awk 'END{print day};{if (NF>0){day=$NF}}')

빈 행을 무시하고 달력 마지막 행의 마지막 날 값을 추출합니다.

약간 더 짧은 것은 다음과 같습니다.

lastday=$(cal 07 2017|awk 'END{print day};{NF>0 && day=$NF}')

답변4

이 시도:

month=$(cal 07 2017)
lastday=${month: -24: 2}
echo $lastday

달력 기능을 사용하여 "월" 변수와 해당 월의 모든 날짜를 로드한 다음 마지막 두 문자를 선택합니다. 예시는 2017년 7월 기준이지만 월/년 단위로 적용됩니다.

관련 정보