GNU grep -P option mismatch with Perl regular expression

时间:2015-06-22 10:43:05

标签: regex perl grep

See very simple output of grep -P, on a 1 line file:

[ldagan:dfII]cat test
oh,this,is,config,2
[ldagan:dfII]grep -icP '\S+?,config,' test
0

However, getting the string to match within Perl regular expression does match!
See below:

[ldagan:dfII]perl -e ' if ("oh,this,is,config,2" =~/\S+?,config,/ )  
{print "yey!\n"} else {print "ney!\n"} ;'
yey!

I am using GNU grep version 2.5.1

2 个答案:

答案 0 :(得分:1)

考虑更新grep。它适用于GNU grep版本2.16:

$ /bin/grep -icP '\S+?,config,' test
1

请记住,grep中的-P功能仍处于试验阶段。

答案 1 :(得分:0)

有2个解决方案,一个是更新grep,就像Arkanosis建议的那样。 第二个类似于vihan1086建议的内容。 使用

grep -iCP '[^ ]+?' test