Linux Command für Zählen Lines mit grep

Registriert
Mai 2009
Beiträge
218
Hi Leute,

ich finde auf google nicht den korrekten Befehl für folgendes Szenario:

Ich möchte aus einem Logfile Ordner mit Anzahl Dateien x, die Linien zählen, in denen ein bestimmtes Wort vor kommt. Jedoch soll er am Ende nicht eine Summe bilden sondern pro Datei.

Benutze ich nämlich den Befehl:

zgrep 'gesuchtes Wort' /var/log/* | wc -l

schreibt er die Gesamtsumme hin. z.B. 50 (50x gefunden in 10 Dateien)

Ich hätte gerne aber so einen Output:

Datei 1 20
Datei 2 10
Datei 3 20

Ich hab den Befehl auch schonmal gesehen (weiß also, dass es geht), aber leider nicht aufgeschrieben.
 
Versuch mal den Parameter -c für Count ;)

user@host:/var/log # zgrep -c cron messages*
messages:14380
messages-20141125.bz2:16301
messages-20141202.bz2:16302
messages-20141209.bz2:16301
 
Zuletzt bearbeitet:
alternativ:

for i in $( ls /var/log/* ); do echo $i; grep "stichwort" $i | wc -l ; done
 
Jup danke, der passt. Da die Logs gezipt sind noch zgrep.
 
Skyo schrieb:
alternativ:

for i in $( ls /var/log/* ); do echo $i; grep"stichwort" $i | wc -l ; done

useless use of backticks ..

grep -c anstatt einem pipe wie OzZy_HH schon schrieb.

for i in `ls /what/ever/`; do grep -c myword $i ; done
 
Zurück
Oben