Você precisa de expressões regulares perl para isso. Com um grep
que suporta o sinalizador -P
:
grep -oP '(?<=a)a' file | wc -l
Este é um lookbehind positivo. Ele corresponde a um único a
, que é precedido por outro a
.
Se você preferir perl
(ou seu grep
não suporta o -P
flag):
perl -ne 'while(m/(?<=a)a/g){$a++}END{print "$a\n"}' file
Exemplo:
$ cat file
aa
aaa
aaaa
A primeira linha deve ser 1 correspondência, a segunda 2 e a terceira árvore; todos juntos 6:
$ grep -oP '(?<=a)a' file | wc -l
6