abordagem sed :
- começando com uma letra minúscula:
s="information"
sed 's/\(.\)\(.\)/\L\U/g' <<< $s
iNfOrMaTiOn
- começando com uma letra maiúscula:
s="information"
sed -E 's/(.)(.){,1}/\U\L/g' <<< $s
InFoRmAtIoN
-
\L- Transforme o substituto em minúsculas até que\Uou\Eseja encontrado -
\U- Transforme a substituição em maiúscula até que\Lou\Eseja encontrado
gawk (GNU awk):
awk -v FPAT="[a-z]" '{ s=""; for(i=1;i<=NF;i++) { s=s""((i%2)? toupper($i) : $i)} print s }' <<< $s
InFoRmAtIoN
-
FPAT="[a-z]"- padrão representando o valor do campo
Outra variação do awk usando split() function:
awk '{ n=split($0,a,""); s="";
for(i=1;i<=n;i++) { s=s""((i%2)? toupper(a[i]): tolower(a[i])) } print s }' <<< $s
InFoRmAtIoN
-
split()retorna o número de elementos criados