我有一个下面给出的输出,我想使用perl使用分隔符将其拆分。
示例:
@output = "00:10:94:00:00:08
line1
line2
line3
line4
7.1.1.18 00:10:94:00:00:08
00:10:94:00:00:09
line1
line2
line3
line4
7.1.1.19 00:10:94:00:00:09" ;
现在在上面的示例中,我必须以我希望00:10:94:00:00:08
及其相应行的方式拆分输出,直到它以ip 7.1.1.18
结尾,并在单个内部使用相同的mac 00:10:94:00:00:08
数组中的索引。类似的另一个mac及其行必须在数组中的另一个索引中。在此之后,我必须查看提供的mac或ip是否与索引中存储的输出匹配。
答案 0 :(得分:0)
您可以使用全局模式匹配将该示例输入拆分为块,如下所示:
#!/usr/bin/perl
use strict;
use warnings;
my $str = "00:10:94:00:00:08
line1
line2
line3
line4
7.1.1.18 00:10:94:00:00:08
00:10:94:00:00:09
line1
line2
line3
line4
7.1.1.19 00:10:94:00:00:09";
while ($str =~ m/([\d:]+)(.*)\1/sg) {
print ">>>$1 $2 $1<<<\n";
}
之后,您可以使用split / /
将它们拆分为单行或字段。