Con GNU sed:
sed -E 's/[[:alpha:]]+/\u&/3'
Capitalizaría la tercera secuencia de letras de cada línea.
Para capitalizar cada tercera secuencia de letras en cada línea:
sed -E 's/(([[:alpha:]]+[^[:alpha:]]+){2})([[:alpha:]]+)/\1\u\3/g'
Para capitalizar cada tercera secuencia de letras en toda la entrada , con GNU awk:
awk -v RS='[^[:alpha:]]+' -v ORS= '
NR % 3 == 0 {$0=toupper(substr($0,1,1)) substr($0,2)}
{print $0 RT}'
O con perl:
perl -Mopen=locale -pe 's/\p{alpha}+/++$n % 3 == 0 ? "\u$&" : "$&"/ge'
Si bien la [[:alpha:]]clase de caracteres puede ser un poco aleatoria en algunos sistemas (por ejemplo, en sistemas GNU, eso incluye muchos números con la exclusión de los árabes (0123456789)), Perl \p{...}se basa en propiedades de caracteres Unicode. Por lo tanto \p{alpha}, incluirán letras en todos los alfabetos y también caracteres alfabéticos que no sean letras.
Sin embargo, no incluirá la combinación de signos diacríticos, lo que significa que palabras como Stéphanese considerarían como dos palabras separadas.
Por lo tanto, es posible que desee en su lugar:
perl -Mopen=locale -pe 's/[\p{alpha}\p{mark}]+/++$n % 3 == 0 ? "\u$&" : "$&"/ge'
Aunque eso puede terminar incluyendo demasiados.
También tenga en cuenta que, a diferencia de GNU sed, Perl \utransformará correctamente palabras como fiddle(donde fihay un carácter de ligadura) a Fiddle(2 caracteres Fy i).