awk 'NR == FNR { # First file
split($0,a,/;/)
#print "change " a[1] "to " a[2]
change[a[1]]=a[2]
}
NR != FNR {
for (i=1;i<NF;i++) {
if ($i in change) {
$i=change[$i]
}
}
print
}' file2 file1
Используйте идиому awk NR! = FNR, чтобы определить, первый это файл или второй. Если это первый файл, разделите строку на ;
и сохраните отображение в массиве изменений. Если это второй, то переберите поле ввода, если есть совпадения, замените правильным изменением. В конце выведите результат.
Маловероятно, что маршрутизатор надолго запомнит связь между MAC-адресом и IP-адресом. MAC-адресов гораздо больше, чем IP-адресов, поэтому сервер DHCP должен быть готов последовательно выдавать один и тот же IP-адрес разным клиентам. Обычный сервер забудет об ассоциации MAC-IP, как только истечет срок аренды.
Однако клиент может помнить об этой ассоциации в течение длительного времени. Клиент DHCP может запросить определенный IP-адрес. Сервер может проигнорировать этот запрос; обычно он удовлетворяет запрос, если IP-адрес находится в нужном диапазоне и в настоящее время не назначен. Я подозреваю, что ваш клиент сохраняет информацию об аренде где-то (/var/lib/dhcp
будет хорошим местом для поиска) и что ваш маршрутизатор обычно удовлетворяет запрос. Когда вы прошиваете новый rootfs, у него нет этой сохраненной аренды, поэтому маршрутизатор выбирает любой IP-адрес, который он предпочитает в эту минуту.
Вероятнее всего, вы найдете ответ, просмотрев свой маршрутизатор, а не систему. Просмотрев веб-интерфейс вашего маршрутизатора, вы сможете узнать: