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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RES: [shell-script] abrir arquivo e incluir caracter


From: Rodolfo Villanova
Subject: RES: [shell-script] abrir arquivo e incluir caracter
Date: Tue, 12 Aug 2003 10:06:44 -0300

Marcio,

Fiz algumas alterações no script e testei com êxito em ambiente SunOs.
Vê se serve:

#!/bin/ksh
IP=172.16.255.255
rm TESTE.out TESTE.tmp 2>/dev/null
while read REGRA
do
  echo $REGRA > TESTE.tmp
  X=`grep "$IP" TESTE.tmp`
  [ -n "$X" ] && echo "#$REGRA" >> TESTE.out || echo "$REGRA" >> TESTE.out
done < TESTE
mv TESTE.out TESTE
rm TESTE.tmp

Se necessitares alguma explicação sobre o que faz cada instrução, não se acanhe 
em perguntar.
Se desejares ver como a execução procede passo-a-passo (trace), insira uma 
linha com a instrução "set -x",
ou altere a primeira linha, acrescentando à direita "-x".

Att.,
Rodolfo Villanova
TmS Brasil

-----Mensagem original-----
De: marcio_costa [mailto:address@hidden]
Enviada em: terça-feira, 12 de agosto de 2003 08:28
Para: address@hidden
Assunto: Re: RES: RES: [shell-script] abrir arquivo e incluir caracter


Desculpe pessoal,
Mas nao funcionou.
Tanto o script do Leogildo, como o do rodolfo.
Aguardo sugestões :)

----- Original Message -----
From: "leogildo_silva" <address@hidden>
To: <address@hidden>
Sent: Monday, August 11, 2003 12:11 PM
Subject: Re: RES: RES: [shell-script] abrir arquivo e incluir caracter


Rodolfo,

Talvez eu nao tenha sido muito claro, mas vamos tentar novamente.

Algumas das situacoes que eh recomendado o seu uso (awk ou  cut):
- como voce observou abaixo, leitura de registros enormes;
- quando existe a possibilidade de chave duplicada (o mesmo conteudo
em varios campos do registro).

Quanto ao grep, ele pode tambem filtrar conteudo de variaveis, desde
que o comando seja devidamente canalizado.

Sei que a ideia eh sempre defender nossas ideias, muitas vezes defendo
as minhas tambem, mas como teimoso que sou, nao me dou por vencido
facilmente.

Entrei nesta lista recentemente, neste final de semana para ser mais
preciso, e pelo andar da carruagem, voces vao ter que me aguentar por
algum tempo!!!

Meu trabalho atual eh voltado especificamente para aplicacoes em
shell-script, com ampla utilizacao no gerenciamento e automacao de
processos e/ou pgms (C, Cobol, Unicenter TNG, Connect:Direct, RVS,
FTP, SyncSort, etc...).

Tenho estudado um pouco de Perl, e confesso que estou impressionado,
pois em algumas situacoes, tenho obtido melhores resultados com esta
linguagem.

Nao tive muito tempo para estudos, e como muitos outros colaboradores,
sou um aplicado auto-didata.

O meu objetivo por aqui, eh de aprender um pouco mais, e quando for
possivel, passar um pouco do que aprendi.

Obrigado pela oportunidade,


Bye.


--- Em address@hidden, "Rodolfo Villanova"
<rodolfo.villanova@t...> escreveu
> Leogildo,
>
> Em plano teórico concordo com algumas observações que levantaste.
> Na prática, levanto duas ressalvas:
>
> 1) Segundo observações de listeiros mais experientes, o uso do awk
justifica-se quando o custo de carregá-lo em memória (seu tamanho é
significativo) compensa a rapidez no tratamento de seu objetivo.
Então, a melhor escolha deve passar pela cronometragem das execuções e
compará-las;
>
> 2) O único teste que fiz (ambientes kron Shell True64 e SunOs) foi
justamente utilizar o "grep" para filtrar uma linha lida pelo "read";
mas deu erro, pois o grep só aceita fazer a pesquisa se  conseguir
abrir um arquivo definido no segundo parâmetro. Não sei se em bash do
Linux funciona; se sim, beleza, é isso aí!
>
> Grato,
>
> Rodolfo Villanova
>
>
> -----Mensagem original-----
> De: leogildo_silva [mailto:leogildo_silva@y...]
> Enviada em: sábado, 9 de agosto de 2003 03:01
> Para: address@hidden
> Assunto: Re: RES: [shell-script] abrir arquivo e incluir caracter
>
>
> Permitam me fazer algumas observacoes.
>
> Concordo com o modelo proposto, porem, loops de arquivos em shell
> custam caro, economize onde puder...
>
> Este modelo pesquisa ${IP} em todo o registro, soh que em algumas
> situacoes, eh recomendado avaliar um campo especifico, e neste caso
> voce provavelmente utilizarah o  "cut"  ou  "awk"...
>
> Testar comandos (mesmos os mais simples) pode parecer um pouco chato,
> mas pode te livrar de dores de cabeca...
>
> Eis uma versao reduzida...
>
> ----------------------------------------------------------------------
> ...
>
> IP=172.16.255.255
>
> rm  /diretorio/iptable_output
>
> while read REGRA
> do
>    if [ $(grep ${IP} ${REGRA}) ]
>    then
>       echo "\#${REGRA}" >> /diretorio/iptable_output
>    else
>       echo   "${REGRA}" >> /diretorio/iptable_output
>    fi
> done < /diretorio/iptable_input
>
> mv /diretorio/iptable_output /diretorio/iptable_input
>
> ...
> ----------------------------------------------------------------------
>
>
> --- Em address@hidden, "Rodolfo Villanova"
> <rodolfo.villanova@t...> escreveu
> > Marcio,
> >
> > Achei um jeito de fazer o que tu queres sem precisar usar sed.
> > Teste o script pra ver se funciona, pois não tive tempo de
> testá-lo.
> > Esse trecho exemplo inclui o caracter "sustenido" (ou "cerquinha",
> ou "jogo-da-velha", ou "comentário", como queira!) no início da
> linha
> que possui o string que casa com o procurado:
> > ...
> > IP=172.16.255.255
> > rm /diretorio/iptable_output
> > while read REGRA
> > do
> > echo $REGRA > /diretorio/REGRA.tmp
> > X="`grep $IP /diretorio/REGRA.tmp`"
> > [ -n $X ] && echo \#$REGRA >> /diretorio/iptable_output || echo
> $REGRA >> /diretorio/iptable_output
> > done < /diretorio/iptable_input
> > mv /diretorio/iptable_output /diretorio/iptable_input
> > rm /diretorio/REGRA.tmp
> > ...
> >
> > Fazer o processo inverso, ou seja, descomentar a linha desejada,
> quero dizer, retirar o "sustenido" do início da linha... aí
> deixo como
> desafio pra ti exercitar as sinapses (ou "queimar as pestanas",
> "oxidar fosfato", "espremer a cachola", sei lá, como queira!)
> >
> > Não esqueçe de dar um retorno pra lista!
> >
> >
> > Êxito na empreitada!
> >
> > Rodolfo Villanova
> >
> >
> >
> >
> >
> >
> > -----Mensagem original-----
> > De: marcio_nei [mailto:marcio_costa@c...]
> > Enviada em: sexta-feira, 8 de agosto de 2003 15:49
> > Para: address@hidden
> > Assunto: [shell-script] abrir arquivo e incluir caracter
> >
> >
> > Alguém sabe como eu posso otimizar o script abaixo?
> > Preciso que ele faça o seguinte:
> > Ao executa-lo, irei consultar uma palavra no arquivo tal e caso ele
> > econtre a palavra, irá incluir um caracter no início da linha
> onde
> > está a mesma.
> >
> > O ideal é o programa ler o arquivo e adicionar o caracter no
> início
> > da linha.
> > -------------------------------------------------------------------
> > #!/bin/bash
> > # Menu de Administracao remota
> > Principal()
> > { echo "=================================================="
> > echo " Menu de Administracao remota"
> > echo "=================================================="
> > echo "Opções:"
> > echo
> > echo "1. Bloquear terminal"
> > echo "2. Liberar terminal"
> > echo "3. Sair do Programa"
> > echo
> > echo -n "Qual a opçao que deseja? "
> > read opcao
> > case $opcao in
> > 1) bloquear ;;
> > 2) liberar ;;
> > 3) exit ;;
> > *) echo "Opçao desconhecida." ; echo ; Principal ;;
> > esac
> > }
> > # Funçao Adicionar (1)
> > bloquear()
> > {
> > clear
> > echo -n "Qual o ip do cliente?"
> > read nome
> > ./travaradio
> > Principal
> > }
> > # Funçao Adicionar (2)
> > liberar()
> > {
> > clear
> > # echo -n "Qual o ip do cliente?"
> > # read nome
> > ./liberaterminal
> > Principal
> > }
> > # Executa o menu principal
> > Principal
> > ------------------------------------------------------------------
> >
> >
> >
> >
> > ------------------------------------------------
> ---------------------
> > 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.listasdiscussao.cjb.net
> > ------------------------------------------------
> ---------------------
> >
> >
> > Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> http://br.yahoo.com/info/utos.html
>
>
>
> ---------------------------------------------------------------------
> 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.listasdiscussao.cjb.net
> ---------------------------------------------------------------------
>
>
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html



---------------------------------------------------------------------
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.listasdiscussao.cjb.net
---------------------------------------------------------------------


Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html





---------------------------------------------------------------------
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.listasdiscussao.cjb.net
---------------------------------------------------------------------
 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
http://br.yahoo.com/info/utos.html 





reply via email to

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