Это первый этап создания цепочки инструментов, поэтому ваша среда сильно зависит от ОС вашего хоста.
В главе 2.2 Требования к хост-системе есть два сценария:
version-check.sh
- который печатает версии всех пакетов, важных для lfs library-check.sh
- для проверки наличия библиотек gmp, mpfr и mpc Вы запускали обе и сравнивали результаты с версиями, указанными в книге?
Из-за ошибки, которую вы получаете:
Эти важные программы отсутствуют или слишком старые: gawk
настолько прост, насколько он есть - ваша ОС хоста имеет слишком старый gawk
.
РЕДАКТИРОВАТЬ:
Спасибо за обновление. Итак, версия gawk
в ОС вашего хоста в порядке. Но проблема по-прежнему заключается в вашей хост-ОС - по какой-то странной причине некоторые пакеты недоступны для обычного (lfs) пользователя, поэтому ваша хост-ОС не соответствует системным требованиям. На стороне lfs исправлять нечего. Вам нужно исправить операционную систему хоста, возможно, переустановить эти пакеты?
$ awk '/blah/ {print $0 "\n" "replacement"; getline; next} 1' file
Если текущая строка соответствует blah
, то распечатайте ее, напечатайте replacement
на новой строке, получите следующую строку вывода (, которую мы уже заменили на «замену» )и ничего не делаем с ним , а затем пропустите оставшееся правило. «Остальное правило» (, которое применяется только к строкам, которые не соответствуют blah
и не следуют за строкой, соответствующей бла-бла ), состоит в том, чтобы просто напечатать строку.
Использование GNU sed
вместоawk
:
sed -e '/blah/{ n; c\' -e 'replacement' -e '}' file
Ищет строки, соответствующие шаблону blah
. Когда такая строка найдена, она печатается с n
, которая также немедленно считывает следующую строку ввода. Эта следующая строка затем изменяется с помощью c
на замещающий текст. Текст замены печатается в конце цикла.
Аннотированный sed
сценарий:
/blah/ { ;# this is a "blah" line
n ;# output line and read next line
# change the line just read
c\
replacement
}
# (implicitly print all lines)
Этот скрипт sed
также будет работать с sed
как в OpenBSD, так и в NetBSD, даже несмотря на то, что одна строка -вверху не работает с этими реализациями из-за того, что они неправильно работают с командой c
., похоже на то.