Откиньте «первые» даты с использованием Cal Function в Bash

​​

Большинство приложений в обычном дистрибутиве действительно используют библиотеки и не компилируются статически, потому что перегрузка RAM и диска была бы гораздо важнее.

Когда вы включаете библиотеки в исполняемый файл, он становится намного тяжелее, поэтому загрузка этого исполняемого файла происходит намного медленнее и требует больших затрат.

Если вы хотите развернуть приложение, которое не использует стандартную системную библиотеку, и не хотите устанавливать их в своей системе, вы можете рассмотреть возможность статической компиляции, чтобы ваша программа не зависела от какой-либо системной библиотеки. Команда ldd youprogram сообщит вам, статическая ваша программа или нет.

Если вы хотите поместить свое приложение в подпапку, используя библиотеку внутри этого каталога, а не в каталог системы, вам нужно будет установить LD_RUN_PATH при запуске приложения, чтобы включить библиотеку, с которой вы упаковываете это, а не системная библиотека.

0
07.12.2018, 21:43
2 ответа

Вот вам еще одно решение

cal | awk 'NR >= 3 { tu = substr($0,7,2) +0 } tu { print tu; exit }'
4

cal 3 2016 | awk 'NR >= 3 { tu = substr($0,7,2) +0 } tu { print tu; exit }'
1

Он выбирает столбец вторника (символы 7 и 8 )и выдает первое не-нулевое значение. Подход можно смело экстраполировать на любой день недели.

1
28.01.2020, 02:31

С датой GNU:

За первый вторник текущего месяца:

for day in 0{1..7}; do [[ "$(date -d $(date +%Y%m${day}) +%a)" = "Tue" ]] && echo "$day";done

Для первого вторника данного года и месяца:

year=2016
month=03
for day in 0{1..7}; do [[ "$(date -d ${year}${month}${day} +%a)" = "Tue" ]] && echo "$day";done

Вариант "Вторник" в awk:

cal | awk -F "" '!/[[:alpha:]]/ && $7$8 ~ /[0-9]/ { print $7$8;exit }'

Это проверяет жесткую -закодированную позицию столбцов 7 и 8 (Вторник )в выводе (обратите внимание, что разделитель полей равен нулю, ввод разбивается на каждый символ)--после пропуска любых строк в которых есть буквы (строки заголовка ). Отрегулируйте 7 и 8, чтобы получить другие дни.

Чтобы было понятнее, что делает предыдущая команда, поля команды awk пронумерованы по столбцам:

123456789            <--- awk fields $1, $2, $3,... $9
    December 2018
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
1
28.01.2020, 02:31

Теги

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