shell-script-pt
[Top][All Lists]
Advanced

[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: Moacir Souza
Subject: Re: [shell-script] Nome próprio - Mudar de minúscula p/ maiúscula
Date: Tue, 19 Jan 2010 13:02:47 -0200

     Em tempo..

     Eu mexo muito com strings, tanto em Shell quando em outras
linguagens. Essa página [1], que está sempre guardada nos meus
bookmarks e que trata de JavaScript, já me deu várias ideias de como
manipular texto para um fim espefício em Shell. Tem até um código para
o seu caso [2].

[1] Link: http://lawrence.ecorp.net/inet/samples/regexp-intro.php
[2] Link: http://lawrence.ecorp.net/inet/samples/regexp-format.php#cap

[]'s,
Moacir Filho

2010/1/19 Moacir Souza <address@hidden>:
>     Daniel,
>
>     Parâmetros como o \U, \L, \E são bastante úteis, mas não aparecem
> no man do sed (ao menos no meu). Para maiores detalhes, acesse info
> sed e busque pela seção * The "s" Command:: `sed''s Swiss Army Knife.
>
> []'s,
> Moacir Filho
>
> P.S.: Mestre Julio, tem que aparecer aqui por Brasília de novo para
> uma atualização do Curso de Shell com essas magavilhas do bash 4,
> hein? (E para tomar um chope comigo e com o Pastore, claro).
>
> 2010/1/19 Julio C. Neves <address@hidden>:
>> 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]
>>
>>
>>
>> ------------------------------------
>>
>> ---------------------------------------------------------------------
>> Esta lista não admite a abordagem de outras liguagens de programação, como 
>> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
>> aviso.
>> ---------------------------------------------------------------------
>> Sair da lista: address@hidden
>> ---------------------------------------------------------------------
>> Esta lista é moderada de acordo com o previsto em 
>> http://www.listas-discussao.cjb.net
>> ---------------------------------------------------------------------
>> Servidor Newsgroup da lista: news.gmane.org
>> Grupo: gmane.org.user-groups.programming.shell.brazil
>>
>> Links do Yahoo! Grupos
>>
>>
>>
>
>
>
> --
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Moacir da Cruz Souza Filho
>
> -Analista de Sistemas: Suporte Unix Avançado
> Serviço Federal de Processamento de Dados
>
> -Mestrando em Ciências da Computação
> Universidade de Brasília
>
> -Bacharel em Engenharia da Computação
> Escola Politécnica de Pernambuco
> Universidade de Pernambuco
>
> -Técnico em Eletrônica
> Escola Técnica Federal de Pernambuco
>
> -Linux user #449600
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>



-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Moacir da Cruz Souza Filho

-Analista de Sistemas: Suporte Unix Avançado
Serviço Federal de Processamento de Dados

-Mestrando em Ciências da Computação
Universidade de Brasília

-Bacharel em Engenharia da Computação
Escola Politécnica de Pernambuco
Universidade de Pernambuco

-Técnico em Eletrônica
Escola Técnica Federal de Pernambuco

-Linux user #449600
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


reply via email to

[Prev in Thread] Current Thread [Next in Thread]