
Ich möchte die Groß-/Kleinschreibung des n-ten Buchstabens einer Zeichenfolge in BASH
(oder anderen *nix-Tools, z. B. sed
, awk
, tr
, usw.) ändern.
Ich weiß, dass Sie die Groß-/Kleinschreibung einer ganzen Zeichenfolge ändern können, indem Sie Folgendes verwenden:
${str,,} # to lowercase
${str^^} # to uppercase
Ist es möglich, die Groß-/Kleinschreibung des 3. Buchstabens von „Test“ in einen Großbuchstaben zu ändern?
$ export str="Test"
$ echo ${str^^:3}
TeSt
Antwort1
In Bash könnten Sie Folgendes tun:
$ 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
In Perl:
$ perl -ple 's/(?<=..)(.)/uc($1)/e; ' <<<$str
abCdefgh
Oder
$ perl -ple 's/(..)(.)/$1.uc($2)/e; ' <<<$str
abCdefgh
Antwort2
Mit GNU sed
(möglicherweise anderen)
sed 's/./\U&/3' <<< "$str"
Mitawk
awk -vFS= -vOFS= '{$3=toupper($3)}1' <<< "$str"
Antwort3
Ein anderer perl
:
$ str="abcdefgh"
$ perl -pe 'substr($_,2,1) ^= " "' <<<"$str"
abCdefgh
Die allgemeine Form ist „
substr($_,n,1)
, wobein
die Position des Buchstabens ist, dessen Groß-/Kleinschreibung Sie umkehren möchten (Index mit Nullbasis).Wenn Sie ein ASCII-Zeichen mit einem Leerzeichen xornen, kehren Sie die Groß-/Kleinschreibung um.