Je souhaite modifier le cas de la lettre n-ième d'une chaîne dans BASH
(ou tout autre * outils nix, par exemple sed
, awk
, tr
, etc.).
Je sais que vous pouvez changer la casse d'une chaîne entière en utilisant:
${str,,} # to lowercase
${str^^} # to uppercase
Est-il possible de changer la casse de la 3ème lettre de "Test" en majuscule?
$ export str="Test"
$ echo ${str^^:3}
TeSt
~
enperl
solution?$ARGV[0]=~
place<<<$str
. Merci.bash
peut être raccourci avecfoo=${str:2}
et${foo^}
, qui ne met en majuscule que le premier caractère de la chaîne.Avec GNU
sed
(éventuellement d'autres)Avec
awk
la source
Un autre
perl
:La forme générale est
substr($_,n,1)
oùn
est la position de la lettre que vous souhaitez inverser la casse (index basé sur 0).Lorsque vous xor un caractère ASCII avec espace, vous inversez sa casse.
la source