Показать количество совпадений всех файлов, содержащих слово

Показать количество совпадений всех файлов, содержащих слово

Какая отдельная команда используется для определения только количества совпадений во всех строках внутри файлов в /etcкаталоге, содержащих слово «HOST»?

Мне следует перечислить только файлы с совпадениями и скрыть любые сообщения об ошибках.

решение1

Чтобы подсчитать совпадения, перечислить только имена файлов и количество:

grep -src HOST /etc/*

Пример вывода:

/etc/postfix/postfix-files:1
/etc/security/pam_env.conf:6
/etc/X11/app-defaults/Ddd.3.3.11:1
/etc/X11/app-defaults/Ddd:1
/etc/zsh/zshrc:0
/etc/zsh/zshenv:0

Эта -cопция подавляет обычный вывод и выводит количество совпадений для каждого файла.

Если вы хотите скрыть файлы с нулевым количеством:

grep -src HOST /etc/* | grep -v ':0$'

Чтобы напечатать номер строки ( -n) и имя файла ( -H) для каждой совпадающей строки для любого количества входных файлов:

grep -srnH HOST /etc/*

Пример вывода:

/etc/lynx-cur/lynx.cfg:254:.h2 LYNX_HOST_NAME
/etc/lynx-cur/lynx.cfg:255:# If LYNX_HOST_NAME is defined here or in userdefs.h, it will be
/etc/X11/app-defaults/Ddd.3.3.11:8005:    DDD 3.3.11 (@THEHOST@) gets @CAUSE@\n\
/etc/X11/app-defaults/Ddd:8010:    DDD 3.3.12 (@THEHOST@) gets @CAUSE@\n\

Опция -rвызывает grepрекурсивный поиск файлов в каждом подкаталоге на всех уровнях указанного каталога. Опция -sподавляет сообщения об ошибках.

Для подавления совпадений двоичных файлов используйте опцию -I.

Видетьman grepЧтобы получить больше информации.

решение2

Это не одна команда, а одна строка.

что-то вроде

 grep -r ',,HOST' . | wc -l

решение3

Вопрос сформулирован немного странно. Сначала он спрашивает количество строк, которые совпадают во всех файлах, затем он хочет, чтобы вы перечислили имена файлов.

Чтобы подсчитать совпадающие строки во всех файлах:

grep -R "ХОСТ" /etc 2> /dev/null | wc -l

Чтобы вывести список имен файлов:

grep -Rl "ХОСТ" /etc 2> /dev/null

решение4

grep -c HOST *

… следует это сделать.

Связанный контент