我有一个hosts
文件,如下所示:
10.10.10.1 myserver1 myserver1alias 10.10.10.2 myserver2 myserver2alias
我正在寻找一种方法,使用perl传递myserver1
的参数并让它返回myserver1alias
,同样如果我传入myserver2
它应该返回myserver2alias
}。有什么建议吗?
答案 0 :(得分:1)
从命令行:
$ perl -lane 'print $F[-1] if $F[1] eq "myserver1"' /etc/hosts
答案 1 :(得分:0)
快速而肮脏的方式是:
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" }
。)
答案 2 :(得分:0)
while(<>){
if (/myserver1/){
@s = split /myserver1/,$_,2;
print $s[-1];
}
}