2015-06-22 42 views
0

grep -P很简单的输出,在1号线文件:GNU的grep -P选项与Perl的正则表达式匹配

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

然而,得到的字符串在Perl中匹配的正则表达式确实匹配!
见下文:

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

我使用GNU grep的版本2.5.1

+0

化妆此:'=〜/ \ S + ?,配置,'这样:'=〜/ [^ [:空间:]] + ?,配置,'添加'-P'标志也 – Downgoat

+0

尝试不用'-c' –

+0

你好Avinash。 -c旨在表明没有匹配。 W/O它,一个获得0行。 – user1134991

回答

1

考虑更新的grep。它正常工作与GNU grep的版本2.16:

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

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

0

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

grep -iCP '[^ ]+?' test