Perl и вопрос размещения файла hosts? - PullRequest
0 голосов
/ 31 марта 2010

У меня есть hosts файл, который выглядит так:

10.10.10.1 myserver1 myserver1alias

10.10.10.2 myserver2 myserver2alias

Я ищу способ использовать perl для передачи аргумента myserver1 и вернуть его myserver1alias, аналогично, если я передам myserver2, он должен вернуть myserver2alias. Есть предложения?

Ответы [ 3 ]

1 голос
/ 31 марта 2010

Из командной строки:

$ perl -lane 'print $F[-1] if $F[1] eq "myserver1"' /etc/hosts
0 голосов
/ 31 марта 2010
while(<>){
 if (/myserver1/){
  @s = split /myserver1/,$_,2;
  print $s[-1];
 }
}
0 голосов
/ 31 марта 2010

Быстрый и грязный способ:

perl -nE 'say $1 if /myserver1\s+(\w+)$/' path/to/hostfile

Время от времени вам может потребоваться выполнять запросы, аналогичные этому, поэтому вы, вероятно, могли бы создать повторно используемый кусок кода, чтобы сделать это для вас. Что-то вроде:

#!/usr/bin/perl

use strict;
use warnings;
use 5.10;

use HostFileParser;

my $host = HostFileParser->parse("path/to/hostfile")

my $server = $host->find(server => "myserver1")

say $server->alias;

Конечно, я не собираюсь "давать вам кодз" за все это. ;)

(Эти ответы предполагают Perl 5.10, но если у вас его нет, изменения просто say $x => print "$x\n" или sub say { print "@_\n" }.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...