Mostrar a contagem correspondente de todos os arquivos que contêm uma palavra

Mostrar a contagem correspondente de todos os arquivos que contêm uma palavra

Qual é o único comando usado para identificar apenas a contagem correspondente de todas as linhas nos arquivos do /etcdiretório que contém a palavra "HOST"?

Devo listar apenas os arquivos com correspondências e suprimir quaisquer mensagens de erro.

Responder1

Para contar as correspondências, listando apenas os nomes dos arquivos e a contagem:

grep -src HOST /etc/*

Exemplo de saída:

/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

A -copção suprime a saída normal e imprime uma contagem de correspondências para cada arquivo.

Se você quiser suprimir os arquivos com contagem zero:

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

Para imprimir o número da linha ( -n) e o nome do arquivo ( -H) para cada linha correspondente para qualquer número de arquivos de entrada:

grep -srnH HOST /etc/*

Exemplo de saída:

/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\

A opção -rfaz com grepque a pesquisa recursiva de arquivos em cada subdiretório em todos os níveis do diretório especificado. A -sopção suprime mensagens de erro.

Para suprimir correspondências de arquivos binários, use a -Iopção.

Verman grepPara maiores informações.

Responder2

Não é um comando, mas é uma linha

algo como

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

Responder3

A pergunta está formulada um pouco estranha. Primeiro ele pede a quantidade de linhas que correspondem em todos os arquivos, depois quer que você liste os nomes dos arquivos.

Para contar as linhas correspondentes em todos os arquivos:

grep -R "HOST" /etc 2> /dev/null | wc-l

Para listar os nomes dos arquivos:

grep -Rl "HOST" /etc 2> /dev/null

Responder4

grep -c HOST *

… deveria fazer isso.

informação relacionada