Использование SED для добавления строки после совпадения просто отображает весь файл

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

Ответственность за перемонтирование корневой файловой системы при чтении -записи лежит на upstart/systemd/etc., поэтому мне нужно было добавить следующее в /etc/init/lvmloop.conf, чтобы заставить его работать.

description "custom local LVM loopback device and setup"

start on mounted MOUNTPOINT=/

task

console output

script
LOOP0=/.img-loop0

if [ -f $LOOP0 ]; then
  losetup /dev/loop0 $LOOP0  # set up loop device...
  vgscan                     # scan for new PVs
  vgchange -ay               # activate VGs
  vgmknodes -v               # makes missing device nodes in /dev
  mount /var                 # for some reason mountall fails to do this...
fi
end script

Было бы «приятнее», если бы я мог разместить это так, чтобы мне не нужно было выполнять эти шаги вручную, но, по крайней мере, ЭТО РАБОТАЕТ.

1
04.01.2021, 03:02
1 ответ

Используйте -eперед командой sed (s ).

sed -e '/AddDefaultCharset UTF-8/a <IfModule mime_magic_module>\n    MIMEMagicFile conf/magic\n</IfModule>' your_conf_file.ini

ПРИМЕЧАНИЕ:Вы можете использовать -i.bakдля редактирования на месте и создания резервной копии с.bak(или любым другим суффиксом ).

1
18.03.2021, 22:38

Теги

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