我有一個hosts
文件看起來像這樣:Perl和hosts文件映射問題?
10.10.10.1 myserver1 myserver1alias 10.10.10.2 myserver2 myserver2alias
我在尋找用perl在myserver1
一個參數傳遞,並有辦法將其返回myserver1alias
,同樣的,如果我通過在myserver2
它應該返回myserver2alias
。有什麼建議麼?
我有一個hosts
文件看起來像這樣:Perl和hosts文件映射問題?
10.10.10.1 myserver1 myserver1alias 10.10.10.2 myserver2 myserver2alias
我在尋找用perl在myserver1
一個參數傳遞,並有辦法將其返回myserver1alias
,同樣的,如果我通過在myserver2
它應該返回myserver2alias
。有什麼建議麼?
的快速和骯髒的方式是:
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;
當然,我不打算「給你所有的codez」。 ;)
(這些答案假設Perl的5.10,但如果你沒有它的變化只是say $x
=>print "$x\n"
,或sub say { print "@_\n" }
)
while(<>){
if (/myserver1/){
@s = split /myserver1/,$_,2;
print $s[-1];
}
}
在命令行:
$ perl -lane 'print $F[-1] if $F[1] eq "myserver1"' /etc/hosts。