Что такое шаблон grep для сопоставления строк? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь найти все случаи в моем тестовом наборе, где однострочные it методы используются вплотную. По сути, я ищу файлы с такими строками:

it { expect(some_stuff).to be_true }
it { expect(other_stuff).to be_false }

, но не с такими:

it { expect(some_stuff).to be_true }
# a bunch of other stuff
it { expect(other_stuff).to be_true }

и не могу понять схему. Я попытался:

> grep it.\{*\}\n*it ./test/directory -lR
# and
> grep it.\{*\}\n*it.\{*

, который ничего не возвращает, но я знаю, что есть хотя бы один соответствующий файл. Кто-нибудь знает, как создать шаблон, который я ищу?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Шаблон, который вы можете искать: /(?:it.*$)\n(?:it.*$)/

Но проблема, с которой вы можете столкнуться с grep или egrep, заключается в том, что эта утилита ищет файл по одной строке за раз, поэтому он не поддерживает let скажем \n в регулярном выражении.

Так что вы можете искать другие варианты, кроме просто grep.

grep manual страница для получения дополнительной информации.

0 голосов
/ 27 апреля 2020

Вы можете использовать pcgregrep :

pcregrep -lr -M "it.{.*}\nit" ./test/directory
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...