Мне интересно, как Баш может решить следующее упражнение. У меня есть набор конфигурационных файлов в одном каталоге, где указаны некоторые IP-адреса. Например:Замена текстовых строк в наборе файлов
conf1.txt
:
ip-addr: 192.168.1.2;
mask...;
gateway...;
another ip-addr: 192.168.1.5;
one more ip-addr: 192.168.1.10;
...
conf2.txt
:
ip-addr: 192.168.1.2;
mask...;
gateway...;
another ip-addr: 192.168.1.5;
one more ip-addr: 192.168.1.10;
...
И вопрос: Как я могу изменить все IP-адреса с другой пул IP-адресов (192.168.1.100-192.168.1.254), но во всех файлах. Так, например:
- 192.168.1.2 -> 192.168.1.100
- 192.168.1.5 -> 192.168.1.101
- 192.168.1.10 -> 192.168.1.102
Я полагаю, что является некоторым механизмом назначения значений из одного массива в другой, поскольку такая жесткая кодировка, как:
sed "s/192.168.1.2/192.168.1.100/g";
Не работает.
Вы ищете решение с использованием Баш + стандартные инструменты оболочки или вы готовы рассмотреть возможность использования более мощного языка, таких как Perl? –
I'mnot bash guru, но я бы сделал следующее: прочитайте из файла http://stackoverflow.com/questions/10929453/bash-scripting-read-file-line-by-line, а затем разделите каждую строку http: // stackoverflow.com/questions/918886/how-do-i-split-a-string-on-a-delimiter-in-bash и заменить на sed в конце. –
Я предпочитаю использовать bash script + shell tools – ascentman