Grep: получите весь файл, который не имеет строки, которая соответствует [закрытый]

17
задан cmbuckley 30 August 2019 в 10:43
поделиться

3 ответа

Используйте параметр «-L», чтобы файл БЕЗ шаблона. На странице руководства:

-L, --files-without-match

Подавить нормальный вывод; вместо этого выведите имя каждого входного файла, из которого обычно не выводились бы выходные данные. Сканирование остановится при первом совпадении.

32
ответ дан 30 November 2019 в 11:37
поделиться

попробуйте "count" и отфильтруйте, где равно ": 0":

grep -c [pattern] * | grep ':0$'

(если вы используете TurboGREP cough , у вас не будет ключа -L;) )

(РЕДАКТИРОВАТЬ: в конец регулярного выражения добавлен символ "$", если в имени есть файлы с ": 0")

0
ответ дан 30 November 2019 в 11:37
поделиться

Grep возвращает 0/1, чтобы указать, было ли совпадение, поэтому вы можете сделать что-то вроде этого:

for f in *.txt; do
    if ! grep -q "some expression" $f; then
        echo $f
    fi
done

РЕДАКТИРОВАТЬ : Вы также можете использовать параметр -L:

grep -L "некоторое выражение" *

6
ответ дан 30 November 2019 в 11:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: