regex - Perl:从文件中的每一行抓取第n个和第m个定界字

标签 regex perl file-io

由于在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/

相关文章:

python - 正则表达式匹配大括号内的数字

javascript - 如何制作这个简单的正则表达式?

mysql - Perl DBD 错误 FUNCTION dbName.GLOB 不存在

arrays - 检查数据结构并忽略散列或数组

java - 用于读取 Java 文件的最好/最简单的类是什么?

php - 匹配字符串中空格后的位数

javascript -/.*=/,'' 在 var id=this.href.replace(/.*=/,'' ); 中是什么意思?

regex - 如何使用 perl 正则表达式检测阿拉伯字符?

Python gzip 给出错误并要求输入类似字节

python - 将整数写入文件