2016-05-18 1 views
1

Я хочу git grep файлов, которые имеют два предварительно заданные слов (если оба они существуют, т.е. AND луга), предположит, что эти два слова word1 и word2Git Grep Несколько слов о нескольких линиях

Я попытался

git grep -e 'word1' --and -e 'word2' 

а также я попытался

git grep 'word1'.*'word2' 

, но и получить результаты, только если word1 и word2 находятся на одной строке, а вторая не извлекается, если в строке находится первая строка, word2, чего я не хочу.

Я хочу получить файлы, даже если два слова не совпадают с одной строкой (я не уверен, сколько строк их разделяет, а порядок не важен, любой порядок должен быть выбран).

Возможно ли это?

+1

Возможно, что-то вроде 'git grep -l word1 | xargs git grep -l word2' ... Может понадобиться поиграть с ним больше, если любое из ваших имен файлов содержит пробелы или другие странности ... – twalberg

ответ

1

Взято из: http://git.661346.n2.nabble.com/bug-git-grep-P-and-multiline-mode-td7613900.html

Да, и преднамеренно так, чтобы избежать того, чтобы думать о таких вещах, как «как бы матч многострочный взаимодействовать с„Grep -n“?»

Мы ведем себя, как если бы мы кормить каждую строку содержимого одна строки за один раз к согласующему двигателю, который выбран с помощью -P/-E/-G/-F optoins, поэтому это ограничение вряд ли изменение.

Таким образом, grep через многострочную линию невозможно.