С GNU sed:
sed -E 's/[[:alpha:]]+/\u&/3'
С заглавной буквы третьей последовательности букв из каждой строки.
Прописать каждую третью последовательность букв в каждой строке:
sed -E 's/(([[:alpha:]]+[^[:alpha:]]+){2})([[:alpha:]]+)/\1\u\3/g'
Чтобы использовать каждую третью последовательность букв во всем вводе с помощью GNU awk:
awk -v RS='[^[:alpha:]]+' -v ORS= '
NR % 3 == 0 {$0=toupper(substr($0,1,1)) substr($0,2)}
{print $0 RT}'
Или с perl:
perl -Mopen=locale -pe 's/\p{alpha}+/++$n % 3 == 0 ? "\u$&" : "$&"/ge'
В то время как [[:alpha:]]класс символов может быть немного случайным в некоторых системах (например, в системах GNU, который включает в себя множество цифр, за исключением арабских (0123456789)), Perl \p{...}основан на свойствах символов Unicode. Таким образом, они \p{alpha}будут включать буквы во всех алфавитах, а также не буквенные алфавитные символы.
Это не будет включать в себя объединение диакритических знаков, хотя это означает, что такие слова как Stéphaneбудут рассматриваться как два отдельных слова.
Так что вы можете вместо этого:
perl -Mopen=locale -pe 's/[\p{alpha}\p{mark}]+/++$n % 3 == 0 ? "\u$&" : "$&"/ge'
Хотя это может в конечном итоге в том числе слишком много.
Также обратите внимание, что в отличие от GNU sed, Perl \uбудет правильно преобразовывать слова вроде fiddle(где fiодин символ лигатуры) в Fiddle(2 символа Fи i).