, в то время как вопрос помечен как sed
и дан идеальный ответ выше, но вот версия awk для тех, кто будет ее искать.
awk '/string3/{gsub("string1", "string2", $0)}1' infile.txt
Причина этой ошибки в том, что здесь eth0
означает две разные вещи:
либо фактическое имя интерфейса, видимое ядром, iproute2 tools, ethtool , dhclient и т. д., которые существуют,
или конфигурация интерфейса в инструментахifupdown , указывающая на фактическое имя интерфейса. Здесь, если eth0
никогда не было определено в конфигурации, тогда ifup не знает :, что является сообщением об ошибке.
Простой способ воспроизвести эту ошибку:
# ip link add name veth5 type veth peer name veth6
# ethtool veth5
Settings for veth5:
Supported ports: [ ]
[...]
Link detected: no
# ifup veth5
ifup: unknown interface veth5
Так что интерфейс не пропал. инструмент ifupdown не настроен на его использование.
В вашем случае вы можете добавить в конец/etc/network/interfaces
(или в отдельный файл например /etc/network/interfaces.d/eth0
, если файл interfaces
включает в себя каталог interfaces.d
в своем конфиге )эти две строки:
auto eth0
iface eth0 inet dhcp
Чтобы инструменты ifupdown и команда ifup
знали об этом и настраивали DHCP при загрузке. Я понятия не имею, почему этого не было раньше.
В моем предыдущем поддельном примере, где я аналогичным образом добавил veth5
определение (в Debian 9):
# ifup -a
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/veth5/1e:96:59:c3:e4:0c
Sending on LPF/veth5/1e:96:59:c3:e4:0c
Sending on Socket/fallback
DHCPDISCOVER on veth5 to 255.255.255.255 port 67 interval 8
Я решил это, выполнив командуdhclient
dhclient -Клиент протокола динамической конфигурации хоста
DHCP-клиент Internet Systems Consortium, dhclient, предоставляет средства для настройки одного или нескольких сетевых интерфейсов с использованием протокола динамической конфигурации хоста, протокола BOOTP или, в случае сбоя этих протоколов, путем статического назначения адреса.
...
Имена сетевых интерфейсов, которые dhclient должен попытаться настроить, можно указать в командной строке. Если в командной строке не указаны имена интерфейсов, dhclient обычно идентифицирует все сетевые интерфейсы, по возможности исключая не -широковещательные интерфейсы, и пытается настроить каждый интерфейс.