Se a sua string não contiver espaços, você pode substituir o _ por um espaço (com tr ( translate character ) ou sed ( editor de fluxo )) e use wc ( contagem de palavras ) para contar as palavras:
$ echo TABLE_PERSON | tr '_' ' ' | wc -w
2
ou
$ echo TABLE_PERSON | sed 's/_/ /' | wc -w
2
se a sua cadeia contiver espaços que não tenham de ser considerados como um separador (por exemplo, se "TABLE_PERSON 2" contar como duas palavras separadas por _ : TABLE e PERSON 2 ), pode primeiro remover os espaços com qualquer caractere (por exemplo, - ) e use o mesmo comando:
$ echo 'TABLE_PERSON 2' | tr ' ' '-' | tr '_' ' ' | wc -w
2