GRUB переходит прямо в консоль после новой установки Arch

Короткий awk-скрипт

awk '
  NR == FNR               { names["R"$2]; next }
  $2 == "Name:"           { replace = ($3 in names) }
  $1 == "type" && replace { sub(/type.*/, "type 700;") }
  1
' file1 file2

NR и FNR являются встроенными переменными awk. NR подсчитывает общее количество просмотренных строк. FNR — это количество строк в текущем файле, просмотренных на данный момент. NR == FNR— это идиома awk, которая означает «Я работаю с первым файлом данных» --— единственный файл, для которого номер текущей записи будет равен общему номеру записи.

Итак, читая первый файл, мы хотим сохранить "ключи", которые находятся во 2-м столбце. Хранение их в качестве ключа ассоциативного массива «names» — удобное место, учитывая оператор in, который мы будем использовать позже. Я добавляю букву «R» к ключу, потому что она есть во втором файле.

Когда $2 == "Name:", мы находимся в начале раздела. Мы хотим заменить значения типа, если 3-е слово в этой строке было замечено в первом файле. ($3 in names)проверяет, появляется ли 3-е слово как ключ в ассоциативном массиве names. Если он есть, то мы выполним замену для любых последующих строк, где 1-е слово — «тип».

Последняя строка сценария интересна. 1— еще одно идиоматическое сокращение, указывающее awk на печать текущей строки. awk-программы представляют собой серию condition {action}пар :, если выполняется условие, выполнять заданные действия. Условие можно опустить, в этом случае действие выполняется для каждой строки. Условие может быть задано без блока действий, и в этом случае действие по умолчанию — напечатать текущую строку. awk считает пустые строки и ноль ложными, поэтому условие 1всегда истинно. Когда я чувствую себя более многословным, я пишу {print}вместо 1, чтобы сделать его более очевидным.

0
29.11.2019, 18:53
1 ответ

Благодаря сообщению на Reddit я обнаружил, что в большинстве руководств не говорится о том, что во время начальной загрузки системы необходимо установить linuxи linux-firmware, а также base. Когда вы загружаете систему, запустите:

pacstrap /mnt base linux linux-firmware

Я долго пытался найти ответ, поэтому надеюсь, что любой, у кого есть такая же проблема, сможет найти его быстрее, чем я!

1
28.01.2020, 02:38

Теги

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