由于在Nagios中添加要监视的主机的方法比较繁琐(与以前的程序只需要IP和主机名相对,它需要定义一个主机对象,而以前的程序则需要定义一个主机对象),所以我认为最好自动执行此操作,并且这将是学习Perl的好时机,因为目前我所知道的只是C/C++和Java。
我从中读取的文件如下所示:
xxx.xxx.xxx.xxx hostname #comments. i.dont. care. about
我想要的只是前2个字符。这些显然是用空格分隔的,但是为了通用起见,它也可能是任何东西。为了使它更笼统,为什么不使用第一个和第三个或第四个和第十个呢?当然,必须涉及到一些正则表达式操作,但是为了以防万一,我暂时暂时不使用该标签。
最佳答案
如果您不编写更多的Perl来处理结果,那么单行代码就很棒。
不过,更一般而言,在较大的Perl程序的上下文中,您可以编写一个自定义的正则表达式,例如:
if($line =~ m/(\S+)\s+(\S+)/) {
$ip = $1;
$hostname = $2;
}
...或者您将使用split运算符。
my @arr = split(/ /, $line);
$ip = $arr[0];
$hostname = $arr[1];
无论哪种方式,都添加逻辑以检查无效输入。
关于regex - Perl:从文件中的每一行抓取第n个和第m个定界字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/156009/