Чи є у CLI Linux спосіб отримання числа тижня місяця? Можливо, є ще один спосіб отримати це за допомогою однієї простої (як date
) команди? Скажімо, день 1 - 7 - перший тиждень, день 8 - 14 - другий тиждень тощо.
Чи є у CLI Linux спосіб отримання числа тижня місяця? Можливо, є ще один спосіб отримати це за допомогою однієї простої (як date
) команди? Скажімо, день 1 - 7 - перший тиждень, день 8 - 14 - другий тиждень тощо.
Відповіді:
date
Команда не може зробити це внутрішньо, так що вам потрібно деяку зовнішню арифметику.
echo $((($(date +%-d)-1)/7+1))
Редагувати: Додано знак мінус між% і d
Ви можете скористатися цим:
Понеділок День першого тижня
WEEKNUMBER=$(( 1 + $(date +%V) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%V) ))
Дати недільної ялинки
WEEKNUMBER=$(( 1 + $(date +%U) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%U) ))
Якщо ви приймаєте зовнішні інструменти у своїх пошуках, спробуйте датиutils . У нього з'явилося поняття дат, що відбуваються протягом місяця, тобто 27 квітня 2012 року є четвертим п'ятницею квітня 2012 року, що просто збігається з вашим визначенням тижня. Щоб отримати це число, використовуйте:
dconv 2012-04-27 -f %c
=>
04
%c
(count) - специфікатор формату для події протягом місяця. Або бути ще крутішим спробувати
dconv today -f '%cth %a in %b %Y'
=>
1st Wed in Sep 2012