ด้วย 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 sedPerl \uจะแปลงคำอย่างถูกต้องfiddle(ซึ่งfiเป็นหนึ่งในอักขระมัด) เป็นFiddle(2 ตัวอักษรFและi)