Я хотел бы перечислить файлы (используя grep -r), которые имеют оба ключевых слова (не обязательно в одной строке): word1 , word2 .

Когда я делаю следующее, я получаю файлы с word1 или word2:

grep -r 'word1\|word2' .

Я также попробовал следующее:

grep -r 'word1|word2'

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

Как я могу получить список файлов, которые содержат два ключевых слова где-то в файле?

1 ответ1

1

Одним из способов является создание списка файлов, содержащих одно ключевое слово, а затем поиск по этому списку для второго, как показано в:

grep -l word2 $(grep -rl word1 .)

Если вы хотите показать совпадения, добавьте третий grep , как в:

grep -E 'word1|word2' `grep -l word2 $(grep -rl word1 .)`

Также можно использовать sed для выполнения функций grep , и можно сделать то, что вы хотите, в одном сканировании с помощью sed , но я этого не продумал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .