Zeigt die Anzahl der Übereinstimmungen aller Dateien an, die ein Wort enthalten

Zeigt die Anzahl der Übereinstimmungen aller Dateien an, die ein Wort enthalten

Welcher einzelne Befehl wird verwendet, um nur die übereinstimmende Anzahl aller Zeilen in Dateien im /etcVerzeichnis 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 -cOption 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 -rbewirkt grepeine rekursive Suche nach Dateien in jedem Unterverzeichnis auf allen Ebenen unterhalb des angegebenen Verzeichnisses. Die -sOption unterdrückt Fehlermeldungen.

Um Übereinstimmungen mit Binärdateien zu unterdrücken, verwenden Sie die -IOption.

Sehenman grepfü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.

verwandte Informationen