Với GNU sed:
sed -E 's/[[:alpha:]]+/\u&/3'
Sẽ viết hoa chuỗi thứ ba của các chữ cái từ mỗi dòng.
Để viết hoa mỗi chuỗi chữ cái thứ ba trong mỗi dòng:
sed -E 's/(([[:alpha:]]+[^[:alpha:]]+){2})([[:alpha:]]+)/\1\u\3/g'
Để viết hoa mỗi chuỗi chữ cái thứ ba trong toàn bộ đầu vào , với GNU awk:
awk -v RS='[^[:alpha:]]+' -v ORS= '
NR % 3 == 0 {$0=toupper(substr($0,1,1)) substr($0,2)}
{print $0 RT}'
Hoặc với perl:
perl -Mopen=locale -pe 's/\p{alpha}+/++$n % 3 == 0 ? "\u$&" : "$&"/ge'
Mặc dù [[:alpha:]]lớp ký tự có thể là một chút ngẫu nhiên trên một số hệ thống (ví dụ: trên các hệ thống GNU, bao gồm nhiều chữ số loại trừ các chữ Ả Rập (0123456789)), Perl \p{...}dựa trên các thuộc tính ký tự Unicode. Vì vậy, những người \p{alpha}sẽ bao gồm các chữ cái trong tất cả các bảng chữ cái và cả các ký tự chữ cái không chữ cái.
Nó sẽ không bao gồm kết hợp các dấu phụ mặc dù điều đó có nghĩa là các từ như Stéphanesẽ được coi là hai từ riêng biệt.
Vì vậy, bạn có thể muốn thay thế:
perl -Mopen=locale -pe 's/[\p{alpha}\p{mark}]+/++$n % 3 == 0 ? "\u$&" : "$&"/ge'
Mặc dù điều đó có thể kết thúc bao gồm quá nhiều.
Cũng lưu ý rằng trái với GNU sed, Perl \usẽ chuyển đổi chính xác các từ như fiddle(trong đó ficó một ký tự chữ ghép) thành Fiddle(2 ký tự Fvà i).