Se você quiser retornar apenas o texto correspondente (em vez da linha inteira), precisará do -o
flag
grep -o 'public .*[a|A]ction.*)'
ou com expressões regulares estendidas
grep -Eo 'public .*[aA]ction.*\)' file
Ou, estendido para qualquer linha que comece com pub (lic), pri (vate) ou pro (tected)
grep -Eo '^(pub|pri|pro).*[aA]ction.*\)' file