Файл hostlist.txt
содержит только 1 столбец. Прога читает файл hostlist.txt
, удаляет повторяющиеся имена хостов, сортирует список, ищет ip-адрес каждого хоста в списке и печатает вывод на терминале.
hostlist.txt
host01
host03
host02
host01
вывод на клемму
host01,192.168.1.15
host02,192.168.1.12
host03,192.168.1.33
Программа:
open(HOSTFILE, "hostlist.txt") or die "Couldn't open location file: $!\n";
while ($hosts = <HOSTFILE>) {
chomp($hosts);
push(@hostnames, $hosts);
}
close HOSTFILE;
@hostnameUnique = uniq(@hostnames);
@hostnameUniqueSorted = sort { lc($a) cmp lc($b) } @hostnameUnique;
foreach $hostname (@hostnameUniqueSorted){
$ipaddr = inet_ntoa((gethostbyname($hostname))[4]);
print "$hostname,$ipaddr\n";
}
Я хочу сделать то же самое, что и выше, за исключением того, что входной файл newhostlist.txt
имеет 3 столбца. Удалите повторяющееся имя хоста, отсортируйте сначала столбец ($type
), затем сортируйте 3-й столбец ($location
), затем сортируйте 2-й столбец ($hostname
), найдите ip-адрес и напечатайте вывод.
Как мне обработать массив из нескольких столбцов?
newhostlist.txt
dell,host01,dc2
dell,host03,dc1
hp,host02,dc1
dell,host01,dc2
Вывод:
dell,host03,192.168.1.33,dc1
hp,host02,192.168.1.12,dc1
dell,host01,192.168.1.15,dc2