Que tal
/bin/grep -E '[a-z]{1,}[A-Z]'
Isso exigiria pelo menos um caractere minúsculo antes de um maiúsculo. Isso corresponderia a todos os seus testes.
Se você quiser também corresponder a algo como camel_Case
e não Nocamelcase
, poderá usar:
/bin/grep -E '([a-z]{1,}[A-Z])|(^.+[A-Z]{1,}[a-z])'
Para testar você mesmo, você pode usar algo como:
cat <<EOF | /bin/grep -E '([a-z]{1,}[A-Z])|(^.+[A-Z]{1,}[a-z])'
NONMATCH
nonmatch
shouldMatch1
should_Match2
should_mAtch3
Non_match
Non_MATCH
Should_mAtch4
Should_Match5
EOF