Найти и заменить с помощью командной строки

Я немного продвинулся в этом вопросе, так что вот частичный ответ. Я использовал этот ответ https://askubuntu.com/a/380564/210203 .

В одном из разделов внешнего диска я скопировал EFI/debian/grubx64.efiв EFI/BOOT/bootx64.efi. Мне также пришлось активировать (гибридную) загрузку UEFI на компьютерах, где я пытался загрузиться из резервной копии.

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

Позже я могу попытаться физически удалить диск, резервную копию которого я пытаюсь выполнить, и посмотреть, загрузится ли этот компьютер из резервной копии.

1
21.06.2016, 12:20
3 ответа

Использование 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
3
27.01.2020, 23:19

Чтобы добавить указанный текст в строку в файле - , если эта строка является единственным, который начинается с mynetworks , вы можете сделать это:

sed --in-place '/^mynetworks/s_.*_& 0.0.0.0/0_' /path/to/file
1
27.01.2020, 23:19

Я склоняюсь к использованию 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/'
0
27.01.2020, 23:19

Теги

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