Bash
更改字元串中第 n 個字母的大小寫
BASH
我想在(或任何其他 *nix 工具,例如sed
、awk
、tr
等)中更改字元串的第 n 個字母的大小寫。我知道您可以使用以下方法更改整個字元串的大小寫:
${str,,} # to lowercase ${str^^} # to uppercase
是否可以將“Test”的第三個字母的大小寫更改為大寫?
$ export str="Test" $ echo ${str^^:3} TeSt
在 bash 中,你可以這樣做:
$ str="abcdefgh" $ foo=${str:2} # from the 3rd letter to the end echo ${str:0:2}${foo^} # take the first three letters from str and capitalize the first letter in foo. abCdefgh
在 Perl 中:
$ perl -ple 's/(?<=..)(.)/uc($1)/e; ' <<<$str abCdefgh
或者
$ perl -ple 's/(..)(.)/$1.uc($2)/e; ' <<<$str abCdefgh
使用 GNU
sed
(可能還有其他)sed 's/./\U&/3' <<< "$str"
和
awk
awk -vFS= -vOFS= '{$3=toupper($3)}1' <<< "$str"