2013-10-29 161 views
2

如果文件中包含字符串A并且它不包含字符串B(也在每个冒号分裂成新行),我想打印一行文件。什么是正确的语法?以下是我试过(我想它含有“庆典”,但不打印包含数字打印线):Perl如果正则表达式匹配A而不是正则表达式匹配B打印

my $file = passwdtest; 
open(FH, "$file"); 
foreach (<FH>) { 
print join("\n", split(/:/, "$_")) if ($_ =~ /bash/ and $_ != /\d+/); 
}; 

close FH; 

回答

4
$_ != /\d+/ 

是短期的

$_ != ($_ =~ /\d+/) 

而不是!=你需要!~

if ($_ =~ /bash/ and $_ !~ /\d+/); 
+0

Jeez,我真笨!谢谢, – GL2014

0

是不是只是:

if (/bash/ && ! /\d+/)