Isso é igualmente direto em qualquer uma das três ferramentas que você mencionou ( awk , sed ou grep ) ou usando qualquer outra ferramenta que tenha suporte para expressões regulares. Aqui está uma expressão regular que corresponde ao padrão que você deseja:
'^\s*class [A-Z]'
Ele corresponde a uma quantidade arbitrária de espaço em branco no início da linha, seguida pela string class , seguida por uma letra maiúscula. Você poderia aplicá-lo usando este comando (parcial) grep :
grep -Pq '^\s*class [A-Z]'
Para testar, você pode tentar algo como o seguinte:
user@host:~$ \
if echo ' class Camel' | grep -Pq '\s*class [A-Z]'; then \
echo TRUE; \
else \
echo FALSE; \
fi
TRUE
user@host:~$ \
if echo ' class camel' | grep -Pq '\s*class [A-Z]'; then \
echo TRUE; \
else \
echo FALSE; \
fi
FALSE
Se você quiser armazenar o resultado na variável TEST , poderá fazer algo como o seguinte:
if echo ' class camel' | grep -Pq '\s*class [A-Z]'; then \
TEST=TRUE; \
else \
TEST=FALSE; \
fi