¿Cuál es el comando único que se utiliza para identificar solo el recuento coincidente de todas las líneas dentro de los archivos del /etc
directorio que contienen la palabra "HOST"?
Debo enumerar sólo los archivos con coincidencias y suprimir cualquier mensaje de error.
Respuesta1
Para contar las coincidencias, enumera solo los nombres de archivo y cuenta:
grep -src HOST /etc/*
Salida de ejemplo:
/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
La -c
opción suprime la salida normal e imprime un recuento de coincidencias para cada archivo.
Si desea suprimir los archivos con recuentos cero:
grep -src HOST /etc/* | grep -v ':0$'
Para imprimir el número de línea ( -n
) y el nombre de archivo ( -H
) para cada línea coincidente para cualquier número de archivos de entrada:
grep -srnH HOST /etc/*
Salida de ejemplo:
/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\
La opción -r
hace grep
que se busquen archivos de forma recursiva en cada subdirectorio en todos los niveles del directorio especificado. La -s
opción suprime los mensajes de error.
Para suprimir coincidencias de archivos binarios, utilice la -I
opción.
Verman grep
para más información.
Respuesta2
No es un comando, sino una línea.
algo como
grep -r ',,HOST' . | wc -l
Respuesta3
La pregunta está redactada un poco extraña. Primero pregunta la cantidad de líneas que coinciden en todos los archivos, luego quiere que enumeres los nombres de los archivos.
Para contar las líneas coincidentes en todos los archivos:
grep -R "HOST" /etc 2> /dev/null | baño -l
Para enumerar los nombres de los archivos:
grep -Rl "HOST" /etc 2> /dev/null
Respuesta4
grep -c HOST *
… Deberías hacerlo.