/ / Rekurzívna grepka zobrazuje iba celkový počet zápasov - bash, shell, grep

Rekurzívna grepka zobrazuje iba celkový počet zápasov - bash, shell, grep

Snažím sa robiť rekurzívne vyhľadávanie grepov, ako napríklad:

grep -r -c "foo" /some/directory

ktoré mi dávajú výstup auch ako:

/some/directory/somefile_2013-04-08.txt:0
/some/directory/somefile_2013-04-09.txt:1
/some/directory/somefile_2013-04-10.txt:4
...etc

Chcel by som však len získať celkový počet zápasov vo všetkých súboroch, napríklad:

Total matches:    5

Hral som si s ďalšími príkladmi ako je v tomto vlákne, aj keď nemôžem robiť to, čo by malo byť tak jednoduché.

odpovede:

21 pre odpoveď č. 1
grep -ro "foo" /some/directory | wc -l | xargs echo "Total matches :"

Na -o možnosť grep výtlačky všetko existujúce výskyty reťazca v súbore.


4 pre odpoveď č. 2

Len potrubie grep.

grep -r "foo" /some/directory | grep -c "foo"

3 pre odpoveď № 3
matches=$(grep -rch "foo" /some/directory | paste -sd+ - | bc)
echo "Total matches: $matches"

Vložiť/bc kus zhŕňa zoznam čísel.Pozri: Bash príkaz súčet stĺpca čísel.


1 pre odpoveď č. 4

Ak potrebujete iba súčet, môžete preskočiť získavaní počtu pre každý súbor a jednoducho získať celkový počet spárovaných riadkov:

grep -r "foo" /some/directory | wc -l