grep -oPz (GNU grep 3.1) не соответствует \ n после положительного просмотра - PullRequest
0 голосов
/ 05 октября 2018

В качестве упрощенного примера у меня есть printf "abc\ndef\nghi\n" | grep -oPz '\w{2}(?=c|f|i)\n', и это ничего не соответствует, однако grep -oPz '\w{2}(?=(c|f|i)\n)' соответствует.Это почему?Мне нужна новая строка в выходных данных.

Требуемый вывод состоит в том, чтобы соответствовать строкам и выводить их без предварительного просмотра, например.ab\n

1 Ответ

0 голосов
/ 05 октября 2018

ab означает a, за которым следует b, и продолжить сопоставление после b.

a(?=b) означает a, за которым следует b, и продолжить сопоставление после a.

Таким образом, для совпадения (?=c|f|i)\n должна быть позиция, соответствующая c и \n, обоим f и \n, либо обоим i и\n.Это невозможно.

...