Как найти второй день каждого месяца

Судя по номеру версии vim, вы используете Debian Jessie. С 2019 -07 -06 это была версия oldoldstable, поэтому она скоро устареет. Просто надо знать...

Вам понадобится пакет vim-runtime. У него нет жестких зависимостей, поэтому вы можете просто подключиться к другому компьютеру с доступом в Интернет, загрузить этот единственный пакет, принести его в вашу несетевую -систему и установить его с помощью sudo dpkg -i vim-runtime*.dpkg.

Думаю, это даст вам хотя бы некоторую подсветку синтаксиса и поддержку цвета. Функция termguicolors, отсутствующая в vim-tiny, относится к полной поддержке 24-битного цвета -в Xterms и совместимых эмуляторах терминалов.

0
25.08.2021, 15:28
2 ответа

Используя то, что я считаю решением POSIX, которое должно работать на HPUX по мере необходимости, вы можете выбрать второй день любого месяца изcal

year=2021 month=8    # Omit entirely for current year and month

cal $month $year |
    sed -nE 's/ 2(.*|)$//p' |
    awk '{ split("Sun Mon Tue Wed Thu Fri Sat",h); print h[length($0)/3+1]}'

Выход

Mon

Пояснение

Команда calпечатает календарь:

cal

    August 2021
Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Мы ищем шаблон {space} 2 {space}или {space} 2в конце строки и удаляем все после него. Затем мы делим длину полученной строки на три (— три символа в столбце недели )и добавляем 1для индексации массива дней недели.

(sedможно было сложить в awk, но я чувствовал, что дополнительная сложность не стоит затраченных усилий.)

Отсюда можно легко перебирать месяцы в году, что может понадобиться:

year=2021
for month in January February March April...
do
    day=$(
        cal "$month" "$year" |
        sed -nE 's/ 2(.*|)$//p' |
        awk '{
            split("Sunday Monday Tuesday Wednesday Thursday Friday Saturday", h);
            print h[length($0)/3+1]
        }'
    )
    printf "%02d %s %d: %s\n" 2 "$month" "$year" "$day"
done
1
25.08.2021, 19:16
cu=`date +%d`

 date --date="$(date --date='1 month ago') -$cu days +2days" +%A" "%Y-%m-%d

Friday 2021-07-02



date --date="$(date --date='1 month') -$cu days +2days" +%A" "%Y-%m-%d 
Thursday 2021-09-02
0
25.08.2021, 19:19

Теги

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