【发布时间】:2018-01-07 06:01:59
【问题描述】:
我有以下文件
文件1:
abc def 主机 123 主机 869 主机
我编写了下面的脚本来计算每行中“主机”关键字的出现次数。 我尝试了所有方法(参考那些被评论的方法)但它似乎不起作用。 sed 命令在命令行中有效,但在 perl 脚本中无效
#!/usr/bin/perl
open(SOURCE,"</home/amp/surevy01/file1");
open(DESTINATION,"</home/amp/surevy01/file2");
while(my $line = <SOURCE>)
{
while(my $line1 = <DESTINATION>)
{
#chomp($line);
#chomp($line1);
if ($line =~ "host")
{
#my $count = grep {host} $line;
#my $count = `sed -i {s/host/host\n/g} $line1 | grep -c {host}`;
#my $count = `perl -pi -e 's/host/host\n/g' $line1 | grep -c host`;
#my $count grep ("host" ,$line);
print "$count";
print "match found \n";
next;
}
else
{
print "match not found \n";
exit;
}
}
}
我是 perl 的初学者。期待您的宝贵建议
【问题讨论】:
-
这是一个离题的评论,但是:您应该使用带有词法文件句柄的 3 参数
open并检查是否成功(如在open( my $fh_in, '<', $filename) or die "cannot open $filename: $!\n"中)并且您应该'不要命名只读文件句柄DESTINATION。这只会在以后让您(和其他人)感到困惑。请始终use strict; use warnings;。
标签: perl