2013-10-29 70 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+/)