[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Nome próprio - Mudar de minúscula p/ maiúscula
From: |
Julio C. Neves |
Subject: |
Re: [shell-script] Nome próprio - Mudar de minúscula p/ maiúscula |
Date: |
Tue, 19 Jan 2010 12:44:18 -0200 |
Fala Daniel,
Isso não vai resolver o teu problema especificamente, mas vale para mostrar
para o pessoal as novidades do bash 4.0 que estou incorporando ao meu livro.
-
${parâmetro^}
-
${parâmetro,}
Essas expansões foram introduzidas a partir do Bash 4.0 e modificam a caixa
das letras do texto que está sendo expandido. Quando usamos circunflexo (^),
a expansão é feita para maiúsculas e quando usamos vírgula (,), a expansão é
feita para minúsculas.
Exemplo:
*$ Nome="botelho"*
*$ echo ${Nome^} *
Botelho
*$ echo ${Nome^^} *
BOTELHO
*$ Nome="botelho carvalho"*
*$ echo ${Nome^} *
*Botelho carvalho **Que pena...*
Um fragmento de *script* que pode facilitar a sua vida:
read -p "Deseja continuar (s/n)? "
[[ ${REPLY^} == N ]] && exit
Esta forma evita testarmos se a resposta dada foi um N (maiúsculo) ou um n
(minúsculo).
No *Windows*, além dos vírus e da instabilidade, também são frequentes nomes
de arquivos com espaços em branco e quase todos em maiúsculas. No exemplo
anterior, vimos como trocar os espaços em branco por sublinha (_), no
próximo veremos como passá-los para minúsculas:
*$ cat trocacase.sh*
#!/bin/bash
# Se o nome do arquivo tiver pelo menos uma
#+ letra maiúscula, troca-a para minúscula
for Arq in *[A-Z]* *Pelo menos 1 minúscula*
do
if [ -f "${Arq,,}" ] *Arq em minúsculas já existe?*
then
echo ${Arq,,} já existe
else
mv "$Arq" "${Arq,,}"
fi
done
Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em SP ligue (11)2125-4747;
- Em DF ligue (61) 3223-3000;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.
2010/1/19 Daniel Merli Morais <address@hidden>
>
>
> Pessoal, como converter apenas o primeiro caracter de cada palavra p/
> maiúsculo? Por exemplo, em um arquivo que contenha nomes próprios:
>
> João silva
> Fulano ciclano
> Maria oliveira
>
> Deveria ficar da seguinte forma:
>
> João Silva
> Fulano Ciclano
> Maria Oliveira
>
> Com o sed consigo localizar o padrão espaço+minúscula: / [a-z]/, porém não
> consigo substituir a primeira letra após o espaço por sua correspondente em
> maiúscula. Disse a primeira letra após o espaço porque a primeira letra de
> cada linha já está em maiúscula no meu arquivo, então só precisaria me
> preocupar com os sobrenomes.
>
> Obrigado desde já.
>
> --
> "A maior virtude do sábio é mostrar-se ignorante diante daquilo que
> desconhece"
>
> Daniel Merli Morais
> Enterprise Application Integration - Configuration Manager
> Sprint / IBM Brasil
> MSN: address@hidden <merlipol%40hotmail.com>
> LinkedIn: www.linkedin.com/in/dmerlimorais
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
[As partes desta mensagem que não continham texto foram removidas]