Как получить значение последнего дня в текущем месяце в awk

Вы можете grep до 'T'

echo 2017-03-08T19:41:26Z | grep -Eo "[^T]+" | head -1
1
13.07.2017, 00:20
4 ответа

Последний день текущего месяца должен быть:

$ 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}'
4
27.01.2020, 23:18

Попробуйте это:

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

Я использую функцию календаря, чтобы загрузить в переменную «месяц» все дни месяца, а затем выбрать последние два символа. Пример относится к июлю 2017 года, но он работает и с месяцем/годом.

0
27.01.2020, 23:18
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}')
0
27.01.2020, 23:18

Просто используйте строку формата для внешнего вызоваdate:

$ date -d "-$(date +%d) days +1 month" +%d
31
1
27.01.2020, 23:18

Теги

Похожие вопросы