Обновление OpenBSD GCC

У вас есть четыре вещи, которые вы пытаетесь выполнить :1 )вставка строки в начало файла, 2 )чтение определенной строки файла, 3 )условное ветвление, если это конкретной строки не существует, и 4 )удаление определенной строки файла.

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

Чтобы вставить строку в начало файла:

sed -i "1i\${date}" ${oldlog}

Опция -iуказывает sedработать с файлом на месте. 1указывает sedработать только с первой строкой. i\говорит sedвставить перед строкой.

Для извлечения 21-й строки:

del="$(sed -n 21p "${oldlog}")"

-nпереводит sedтолько в тихий режим, поэтому единственным выводом является то, что явно напечатано. 21— номер строки, а p— команда печати.

Чтобы определить, есть ли 21-я строка:

sed -n 21q1 ${oldlog}

Снова -nпереводит sed в тихий режим, 21выбирает 21-ю строку, qуказывает sed выйти, а 1является кодом выхода.

Удаление 21-й строки:

sed -i 21d ${oldlog}

Опять же, -iдля работы с файлом на месте, 21выбирает строку 21 и dудаляет строку.

Собираем все воедино:

sed -i "1i\${date}" ${oldlog}
del="$(sed -n 21p "${oldlog}")"
sed -n 21q1 ${oldlog} || { echo "Deleting ${dest}/old/${del}" && rclone purge "${dest}/old/${del}" && sed -i 21d ${oldlog} }
0
22.08.2021, 12:05
1 ответ

На момент написания GCC -11.2.0 доступен для установки в виде пакета для всех основных архитектур. Пожалуйста, прочтите соответствующий раздел часто задаваемых вопросов по OpenBSD для получения подробной информации об использовании системы пакетов.

1
24.08.2021, 11:38

Теги

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