我正在编写Perl脚本,但我没有得到它的一部分。对文本文件中的字符串不区分大小写的grep
有一个带有主机名的文本文件,每行一个。
我需要搜索第二个文件的主机名(黑名单),以查看从第一个主机名读取的主机名。要成为圣人,搜索应该不区分大小写。
我的第一种方法是使用Perl grep
,但我阅读了它,它似乎不太适用于我所需要的。所以我想过使用shell grep
。
据我所知,它可以执行system
,qx
,反引号和open
。
我决定使用system
,这样我就可以得到grep
的退出状态代码,并在if
语句中使用它来完成脚本的其余工作。我的代码看起来像这样(与grep
测试脚本):
use strict;
use warnings;
my $blacklist_server = "de9899svc";
my $server = undef;
my $exit_value = undef;
open(SERVERLISTE,"/home/ansible/serverscan/scan_results/serverliste_22.02.17.txt") or die "$!";
OUTER: while (<SERVERLISTE>) {
$server = $_;
system("grep -i '\$server' /home/ansible/serverscan/black.list");
$exit_value = $? >> 8;
print "$exit_value\n";
}
close SERVERLISTE;
的问题是,$exit_value
始终为1,无论主机名是否匹配。所以有人可以告诉我我错过了什么:)
'if(grep {/ $ server/i}''请试试这样。 –
ssr1012