Welcher einzelne Befehl wird verwendet, um nur die übereinstimmende Anzahl aller Zeilen in Dateien im /etc
Verzeichnis zu ermitteln, die das Wort „HOST“ enthalten?
Ich sollte nur die Dateien mit Übereinstimmungen auflisten und alle Fehlermeldungen unterdrücken.
Antwort1
Um die Übereinstimmungen zu zählen, listen Sie nur die Dateinamen auf und zählen Sie:
grep -src HOST /etc/*
Beispielausgabe:
/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
Die -c
Option unterdrückt die normale Ausgabe und druckt für jede Datei eine Übereinstimmungsanzahl.
Wenn Sie die Dateien mit der Anzahl Null unterdrücken möchten:
grep -src HOST /etc/* | grep -v ':0$'
So drucken Sie die Zeilennummer ( -n
) und den Dateinamen ( -H
) für jede übereinstimmende Zeile für eine beliebige Anzahl von Eingabedateien:
grep -srnH HOST /etc/*
Beispielausgabe:
/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\
Die Option -r
bewirkt grep
eine rekursive Suche nach Dateien in jedem Unterverzeichnis auf allen Ebenen unterhalb des angegebenen Verzeichnisses. Die -s
Option unterdrückt Fehlermeldungen.
Um Übereinstimmungen mit Binärdateien zu unterdrücken, verwenden Sie die -I
Option.
Sehenman grep
für mehr Informationen.
Antwort2
Es ist kein einzelner Befehl, sondern eine Zeile
etwas wie
grep -r ',,HOST' . | wc -l
Antwort3
Die Frage ist etwas merkwürdig formuliert. Zuerst wird nach der Anzahl der Zeilen gefragt, die in allen Dateien übereinstimmen, dann sollen die Dateinamen aufgelistet werden.
So zählen Sie die übereinstimmenden Zeilen in allen Dateien:
grep -R "HOST" /etc 2> /dev/null |
So listen Sie die Dateinamen auf:
grep -Rl "HOST" /etc 2> /dev/null
Antwort4
grep -c HOST *
… Sollte es tun.