Por palavra quero dizer "uma sequência de caracteres separados por qualquer número de espaços em branco ou novas linhas".
Dados de amostra
on a rabbit's burrowing in the forest:
a short tale
Resultados esperados
On a Rabbit's Burrowing in the Forest:
A Short Tale
Nota: Para maiúsculas e minúsculas do título, a primeira letra de cada palavra de cada frase/frase deve ser maiúscula. Cada palavra depois disso deve começar com maiúscula, exceto as palavras minúsculas a , in , the . Também quero que os espaços em branco e as novas linhas sejam preservados.
Caso de teste reduzido
declare -a input
declare -a output
shopt -s extglob
IFS=
read -r -d '' input
for w in "${input[@]}"; do
if [[ $w = "@(a|in|the)" ]]; then
output+=( "$w" )
else
output+=( "${w@u}" )
fi
done
echo "${output[@]}"
Isso preserva espaços em branco e novas linhas, mas transforma apenas a primeira "palavra", enquanto eu gostaria que todas as palavras, exceto a , in e transformadas .