Bash

更改字元串中第 n 個字母的大小寫

  • November 6, 2019

BASH我想在(或任何其他 *nix 工具,例如sedawktr等)中更改字元串的第 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"

引用自:https://unix.stackexchange.com/questions/168212