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ď č. 1grep -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