Я немного продвинулся в этом вопросе, так что вот частичный ответ. Я использовал этот ответ https://askubuntu.com/a/380564/210203 .
В одном из разделов внешнего диска я скопировал EFI/debian/grubx64.efi
в EFI/BOOT/bootx64.efi
. Мне также пришлось активировать (гибридную) загрузку UEFI на компьютерах, где я пытался загрузиться из резервной копии.
Теперь оба ноутбука загружаются с резервного диска. Однако они зависали в разных местах в процессе загрузки. Я не знаю, вызвано ли это отсутствием драйверов или, возможно, получением доступа к зашифрованному разделу.
Позже я могу попытаться физически удалить диск, резервную копию которого я пытаюсь выполнить, и посмотреть, загрузится ли этот компьютер из резервной копии.
Использование sed
sed -i 's+^mynetworks.*+& 0.0.0.0/0+' log.txt
Использование awk
awk '/^mynetworks/ {$0=$0" 0.0.0.0/0"} 1' log.txt
или
awk '{if ($1 ~ /^mynetworks/) print $0, "0.0.0.0/0"; else print $0}' log.txt
Использование bash
while read -r line ; do
[[ $line == mynetworks* ]] && line+=" 0.0.0.0/0"
echo "$line"
done < log.txt
Чтобы добавить указанный текст в строку в файле - , если эта строка является единственным, который начинается с mynetworks
, вы можете сделать это:
sed --in-place '/^mynetworks/s_.*_& 0.0.0.0/0_' /path/to/file
Я склоняюсь к использованию Perl. sed или awk вполне подходят в этом случае, но иногда гибкость Perl оказывается полезной.
perl -pi -e 's/^(mynetworks.*)/$1 0.0.0.0\/0/' /path/to/file
или если это в цепочке труб
cat file | perl -pe 's/^(mynetworks.*)/$1 0.0.0.0\/0/'