Qual é o único comando usado para identificar apenas a contagem correspondente de todas as linhas nos arquivos do /etc
diretó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 -c
opçã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 -r
faz com grep
que a pesquisa recursiva de arquivos em cada subdiretório em todos os níveis do diretório especificado. A -s
opção suprime mensagens de erro.
Para suprimir correspondências de arquivos binários, use a -I
opção.
Verman grep
Para 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.