$ cat <<EOF > test
foo bar
foo bar() baz
foo.bar() baz
foo bar baz()
foobarbaz() foo bar()baz
EOF
$ grep -o '\w\+()' test
bar()
bar()
baz()
foobarbaz()
bar()
-
-o
significa "imprimir apenas peças correspondentes", ou seja, não a linha inteira -
\w
significa "um caractere dentro de uma palavra" -
\+
significa "a entidade anterior uma ou mais vezes"
Portanto, grep -o '\w\+()'
significa "imprimir tudo o que consiste em um ou mais caracteres de palavra seguido por ()".
Isso ainda corresponderá a a parte bar()
de bar()baz
. Alguém poderia argumentar que os parênteses realmente terminam a palavra, o que torna bar()
"uma palavra que termina em ()". Presumo que, de qualquer forma, isso não seja um problema em seu caso de uso real.