Quiero cambiar el caso de la letra n-ésima de una cadena en BASH
(o cualquier otra herramienta de * nix, por ejemplo sed
, awk
, tr
, etc.).
Sé que puedes cambiar el caso de una cadena completa usando:
${str,,} # to lowercase
${str^^} # to uppercase
¿Es posible cambiar el caso de la tercera letra de "Prueba" a mayúsculas?
$ export str="Test"
$ echo ${str^^:3}
TeSt
~
enperl
solución?$ARGV[0]=~
lugar de<<<$str
. Gracias.bash
puede acortar confoo=${str:2}
y${foo^}
, que solo capitaliza el primer carácter de la cadena.Con GNU
sed
(posiblemente otros)Con
awk
fuente
Otro
perl
:La forma general es
substr($_,n,1)
dónden
está la posición de la letra que desea invertir el caso (índice basado en 0).Cuando crea un carácter ASCII con espacio, invierte su mayúscula.
fuente