Сценарии сопровождающего ядра, в частности /etc/kernel/postinst.d/apt-auto-removal
, составляют список ядер, которые необходимо сохранить, сохраняя их как конфигурацию APT в /etc/apt/apt.conf.d/01autoremove-kernels
. Этот процесс сохраняет текущее запущенное ядро, конфигурируемое ядро и два последних установленных ядра.
Предположительно, в последний раз, когда скрипт запускался перед вашей первой очисткой -, -96
оказался защищенным, поскольку попал в одну из этих категорий. После вашей первой очистки -он перестал работать и стал кандидатом на удаление. Если вы хотите выяснить , почему , файл 01autoremove-kernels
содержит отладочную информацию; глядя на него до первой очистки -и снова после, вы должны понять, почему различные версии ядра защищены.
Автоматическое удаление ядра -является преднамеренно консервативным и ошибочным в сторону осторожности. Вы можете справиться с этим автоматически (в конце концов )используя unattended-upgrades
; подробности см. на вики Ubuntu .
regex=/^[a-zA-Z]+\S+/
означает «сравнить $0
с /^[a-zA-Z]+\S+/
и сохранить результат в переменной regex
», поэтому regex
будет 1 или 0 в результате этого присваивания, и поскольку мы находимся в разделе BEGIN
где строки не были прочитаны и поэтому $0 все еще пуст, это эквивалентно regex=0
.
\S
является расширением GNU awk, что означает [^[:space:]]
, поэтому, если вы использовали GNU awk -, оно также поддерживает строго типизированные константы регулярных выражений (, см.https://www.gnu.org/software/gawk/manual/gawk.html#Strong-Regexp-Constants). Имея это в виду, вы можете (отметить символ @
):
$ seq 5 | awk 'BEGIN{re=@/3/} $0 ~ re'
3
но только в GNU awk.
В любом другом варианте awk (, в котором вы говорите, что используете версию 20070501
Я подозреваю, что вы используете вариант BSD )лучшее, что вы можете сделать, это использовать динамическое регулярное выражение:
$ seq 5 | awk 'BEGIN{re="3"} $0 ~ re'
3
Это не шаблон awk (похоже на perl):
regex=/^[a-zA-Z]+\S+/
что-то вроде этого подойдет:
regex="^[a-zA-Z]+[^[:space:]]+"
Кроме того, ваш шаблон должен соответствовать $0
(, а не$1
). $0
— вся строка. $1
- это первое поле (думайте о нем как о первом слове в каждой строке :, которое может не иметь#
для сопоставления в первом столбце ).
С этими двумя исправлениями ваш пример мне подходит...