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\U
ou\E
seja encontrado -
\U
- Transforme a substituição em maiúscula até que\L
ou\E
seja 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