[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Contando palavras dentro de um string
From: |
Helder Jean |
Subject: |
Re: [shell-script] Contando palavras dentro de um string |
Date: |
Fri, 19 Sep 2003 21:06:48 -0300 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030707 |
Rodolfo Villanova - TmS Brasil wrote:
Caros amigos,
Montei um script em Korn Shell (ambiente SunOs 2.8) que, entre "otras
cocitas", executa uma consulta SQL que retorna o conteúdo de dois campos de
uma tabela em um BD:
NOME e DATA.
O campo NOME é composto de um nome e 1 ou + sobrenomes.
O conteúdo do campo DATA é óbvio.
A chamada à função se dá atribuindo sua execução à uma variável, ou seja:
RET=`consultaSQL $CPF`
O que for atribuído à variável RET ou é um erro Oracle ou são os dados que
necessito.
Se os dados fossem simplesmente passados como parâmetros para uma função,
beleza: bastaria saber quantos são esses argumentos, e trabalharía-os
"shiftando" argumentos até acabar.
O "pobrema" é que o retorno é um string.
O que eu quero pegar nesse string é o nome, último sobrenome e a data
retornada.
(corta)
Fiquei curioso e quebrei a cabeça pra ver se conseguia fazer esse. :)
Testei num SunOS 5.8 com korn shell e funcionou direitinho, olha aí:
# cat teste.txt
Fulano da Silva 19/09/2003
Sicrano Junior 18/09/2003
Beltrano Silva Junior 17/09/2003
Jose 16/09/2003
# cat teste.txt | sed 's/ \([0-9/]*\)$/:\1/g; s/\ .*\ / /g; s/:/ /g'
Fulano Silva 19/09/2003
Sicrano Junior 18/09/2003
Beltrano Junior 17/09/2003
Jose 16/09/2003
O que o sed tá fazendo:
s/ \([0-9/]*\)$/:\1/g --> Substitui qualquer sequência de números e
barras, que iniciem com um espaço e estejam no final da linha, pela
mesma sequênca com um dois-pontos no lugar do espaço.
s/\ .*\ / /g --> Substitui qualquer coisa que comece e termine com
um espaço por espaço. Assim ele acaba com os nomes do meio, já que o
último nome não é separado da data por espaço, e sim por dois-pontos.
s/:/ /g --> Tira o dois-pontos que colocamos no início e coloca o
espaço de volta.
Seria isso que você queria? Espero que sim.
[]'s
--
Helder Jean <Helder.J[at]gmx.net>
Engenharia de Computação - UFRN - http://www.ufrn.br
Gerência de Redes - Superintendência de Informática - UFRN
Linux Registered User #229979
GnuPG KeyID: 0x46EE1E86
----------------------------------------------------------