2015-06-22 3 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

Hello Avinash. Параметр -c должен был показать, что совпадений нет. Без него получается 0 строк. – user1134991

ответ

1

Рассмотрим обновление Grep. Он отлично работает с GNU Grep версии 2.16:

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

Помните, что -P особенность в Grep все еще является экспериментальной.

0

Существует 2 решения, одно - обновить grep, как и предложил Арканоз. Второе похоже на то, что предложил vihan1086. Использование

grep -iCP '[^ ]+?' test 
Смежные вопросы