Вы можете использовать следующий скрипт perl exchange_ips.pl для обмена ip либо тремя постоянными ips (функция exchange_const()), либо тремя инкрементными ips (функция exchange_incr()). Просто добавьте комментарий (#) перед вызовом функции в конце скрипта, который вам не нужен.
Обратите внимание, что один или несколько инкрементальных ips будут неправильными, если исходный ip заканчивается 253 или выше.
Скрипт изменяет все строки, начиная с $domainname . Если доменное имя не имеет значения, или если ваши файлы содержат строки только для одного / того же домена, установите my $domainname = ".+"; ,
#!/usr/bin/perl
use strict;
use warnings;
my @data = <STDIN>;
my $domainname = "subdomain";
my $const_ip1 = "123.123.123.123";
my $const_ip2 = "124.124.124.124";
my $const_ip3 = "125.125.125.125";
my $pattern = qr/^($domainname\s+A\s+)([\d\.]+)/is;
sub exchange_const($) {
    my $dataref = shift;
    my $found = 0;
    foreach (@$dataref) {
        if ($_ =~ m/$pattern/) {
            unless ($found) {
                $found = 1;
                printf "%s%s\n%s%s\n%s%s\n", $1, $const_ip1, $1, $const_ip2, $1, $const_ip3;
            }
        } else {
            print $_;
        }
    }
}
sub exchange_incr($) {
    my $dataref = shift;
    my $found = 0;
    foreach (@$dataref) {
        if ($_ =~ m/$pattern/) {
            unless ($found) {
                $found = 1;
                my $const = $1;
                my @iparr = split /\./, $2;
                for (1 .. 3) {
                    $iparr[3]++;
                    printf "%s%s\n", $const, join ".", @iparr;
                }
            }
        } else {
            print $_;
        }
    }
}
# exchange ip with constant ips
exchange_const(\@data);
# exchange ip with incremental ips
exchange_incr(\@data);
Назовите сценарий так:
perl exchange_ips.pl < your_file
Цикл по всем файлам (с резервной копией):
for f in /named_ext/*; do rename s/$/.bak/ $f; perl exchange_ips.pl < $f.bak > $f; done
Пример:
Пример файла для модификации:
# some foo
subdomain                       A       200.201.202.203
# duplicate
subdomain                       A       200.201.202.203
# some bar
otherdomain                     A       99.99.99.99
otherdomain                     A       1.1.1.1
# another duplicate
subdomain                       A       200.201.202.203
Вывод exchange_const():
# some foo
subdomain                       A       123.123.123.123
subdomain                       A       124.124.124.124
subdomain                       A       125.125.125.125
# duplicate
# some bar
otherdomain                     A       99.99.99.99
otherdomain                     A       1.1.1.1
# another duplicate
Вывод exchange_incr():
# some foo
subdomain                       A       200.201.202.204
subdomain                       A       200.201.202.205
subdomain                       A       200.201.202.206
# duplicate
# some bar
otherdomain                     A       99.99.99.99
otherdomain                     A       1.1.1.1
# another duplicate