Text-Processing

如何在awk中獲取當月最後一天的值

  • July 12, 2017

根據最後一天的連結可以看到使用這個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

有人有更簡單/更清潔的想法嗎?

當月的最後一天應該是:

$ 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}'

只需使用格式字元串進行外部呼叫date

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

引用自:https://unix.stackexchange.com/questions/378048