Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

Criando função swapcase

A função swapcase, realiza uma troca entre caracteres; o que é minúsculo vira maiúsculo e vice-versa. Desenvolvedores Python conhecem bem esse método de strings.

Vou mostrar que com poucas linhas podemos criar essa função em Shell Script.

A grosso modo posso dizer que o comando responsável por toda essa mágica é o sed, mas antes precisamos preparar os parâmetros que iremos passar para ele.

Sintaxe: sed 'y/PADRAO/DESTINO/'

TAG Descrição
y Transfere os caracteres em PADRAO que aparecem na fonte para o caractere correspondente no DESTINO.

O comando busca pelo caractere em PADRÃO e substitui pelo caractere correspondente a posição em DESTINO.

Exemplo:

Transformando a letra 'a' de minúsculo para maiúsculo e vice-versa.

$ echo 'a' | sed 'y/aA/Aa/'
A
$ echo 'A' | sed 'y/aA/Aa/'
a

Observe que a letra 'a' em PADRAO, correspondente a letra 'A' em destino e a letra 'A' em PADRAO, corresponde a letra 'a' em DESTINO.

Jà imaginou montar o alfabeto todo ? Que trabalho que daria ?!! Por isso que utilizei o comando printf + awk para montar o alfabeto já com os caracteres correspondentes e armazená-los.

Script: xswapcase.sh

#!/bin/bash

#-------------------------------------------------
# Data:        28 de Novembro de 2016
# Criado por:  Juliano Santos [SHAMAN]
# Script:      xswapcase.sh
# Descrição:   Inverte a formatação dos caracteres.
# Página:      http://www.shellscriptx.com.br
# Github:      https://github.com/shellscriptx
#-------------------------------------------------

# Imprimindo alfabeto em minúsculo, realizando conversão intercalada para maiúsculo.
# Exemplo: aAbBcC...    
ORIGEM=$(printf '%s\n' {a..z} | awk '{printf "%s%s",$1,toupper($1)}')

# Imprimindo alfabeto em maiúsculo, realizando conversão intercalada para minúsculo.
# Exemplo: AaBbCc...
DESTINO=$(printf '%s\n' {A..Z} | awk '{printf "%s%s",$1,tolower($1)}')

# Transforma a cadeia de caracteres 'ORIGEM' em 'DESTINO'.
# Exemplo: a -> A, A -> a, b -> B, B -> b, c -> C, C -> c ...
sed "y/$ORIGEM/$DESTINO/"

exit 0
#FIM

Testando...



Comentários

Contato

Nome

E-mail *

Mensagem *