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

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

Re: [shell-script] referenciar arquivo.


From: Rafig
Subject: Re: [shell-script] referenciar arquivo.
Date: Sat, 16 Sep 2006 14:04:27 +0000 (GMT)

Valeu, Flávio, confesso que eu não explicaria melhor que isto. Muito boa 
explicação.
E, se vc puder ou souber tirar a minha dúvida eu te agradeço:
Como eu faço para inserir algo no meio de um arquivo ?
O echo acrescenta ao fial da linha ou modifica tudo no arquivo, mas não é isso 
que quero. Por exemplo, telho o arquivo /etc/squid.conf e gostaria de 
acrescentar uma ACL ou uma regra neste arquivo como faria usando um 
shell-script ? Eu preciso que atavés de linha de comando ou num script 
acrescentar algo num determinado arquivo e isto deverá ser no meio do arquivo. 
Vc sabe como faço ?
O que uso SED ou AWK ? ou outra coisa ?
Agradecerei muito a quem puder me ajudar.
Rafig

Flavio Junior <address@hidden> escreveu: Hm.. deixa eu tentar atender o pedido 
do Rafig..

Isaias, esse comando que o Rafig te passou vai fazer o seguinte:
- Percorrer o arquivo linha a linha e exibir na tela*
- Quando ele encontrar a ocorrencia de QUALQUER "*" (asterisco) em
QUALQUER lugar do arquivo, ele vai substituir isso por um "."
(ponto)...
- No final, aquele ">>" que ele fez ali, direciona na verdade a saida
q disse no primeiro item que seria em tela para um arquivo, ou seja,
ele nao altera seu arquivo direto e sim gera um novo arquivo "arquivo
final" com essa alteração já realizada.

Dois pontos importantes, na forma como voce solicitou a ajuda voce foi
bem especifico quanto ao que alterar e onde, por isso a maioria do
pessoal passou soluções mais "complexas", por que era necessario
tratar uma linha X e uma coluna Y. Se por acaso JAMAIS vá aparecer um
* no meio do seu arquivo que NÃO possa ser alterado pra um ".", essa
solução do Rafig é mto boa porem, se voce disser q quer alterar
SOMENTE o asterisco que aparecer na linha X e na coluna Y, essa
solução nao será a melhor, visto que ela altera qualquer asterisco em
qualquer lugar.

Então fica ao seu criterio, escolher a melhor solução. Eu vou
contribuir usando a ideia do Rafig e se ela for suficiente pra voce
blz.

Como outro amigo nosso ai disse, o sed possui a opção "-i", que faz
com que voce não precise gerar um arquivo com a alteração e manter o
original, se for isso que voce quer é só adicionar o -i na linha do
rafig e esquecer a parte do >> arquivo final, ficando assim:

$ sed -i 's/*/./g' arquivo.txt

Outro detalhe que vale dizer, aquele "g" no final do comando do sed
ali quer dizer TODOS na linha, ou seja, TODOS * que aparecerem na
linha vao virar . - se tu quiser que somente o primeiro * encontrado
na linha vire ., é só tirar o g. Outro detalhe, unindo as outras
respostas, se o numero da linha onde esse * vai aparecer for fixo,
seria interessante voce especifica-lo pro sed, assim voce evita que
outros * de outras linhas virem .   :)

No final, a minha contribuição organizando as respostas da galera e
acreditando que seu problema nao era tao complicado qto vc pensou é:

$ sed -i '15s/*/./' arquivo.txt

Assim eu disse,
 - altere no arquivo arquivo.txt
 - na linha 15
 - substitua o primeiro * que encontrar por .


Espero ter ajudado,

Sorte.

Flávio do Carmo Junior

On 9/15/06, Isaias de Assis Machado  wrote:
> PERFEITO...
>
> ________________________________
>
> De: address@hidden [mailto:address@hidden] Em nome de Tiago Barcellos Peczenyj
> Enviada em: sexta-feira, 15 de setembro de 2006 16:59
> Para: address@hidden
> Assunto: Re: [shell-script] referenciar arquivo.
>
>
> $ awk -v X="." -v L=17 -v C=15 'NR!=L{print}
> NR==L{print substr($0,0,C-1),X,substr($0,C+1)}' file
>
> X é o caracter q vc quer mostrar, L é a linha e C é a coluna...
>
> serve isso?
>
> On 9/15/06, Isaias de Assis Machado  wrote:
> > Peguei o arquivo no site do grupo..
> > fiz o seguinte:
> >
> > [isaias@home]$ cat arquivo.txt
> > xx000000000111111111122222
> > xx123456789012345678901234
> > 01
> > 02
> > 03
> > 04
> > 05
> > 06
> > 07
> > 08
> > 09
> > 10
> > 11
> > 12
> > 13
> > 14
> > 15            *
> > 16
> > 17
> >
> > [isaias@home]$ cat arquivo.txt | sed -n '17p'|cut -b15-
> > *
> >
> > Beleza.. Isso me mostra o caractere em questao.. Mas como eu farei pra 
> > sobrescrever ele no arquivo.txt (tipo.. Quero escrever um "." (ponto) no 
> > lugar dele...)...................
> >
> >
> > []'s
> >
> > Isaias
> >
> >
> >
> > ________________________________
> >
> > De: address@hidden [mailto:address@hidden] Em nome de rafig38
> > Enviada em: sexta-feira, 15 de setembro de 2006 15:16
> > Para: address@hidden
> > Assunto: [shell-script] referenciar arquivo.
> >
> >
> > Tem o arquivo em htm chamado sed_ptBR[1].html nos arquivos do grupo
> > que vc pode consultar.
> >
> >
> >
> >
> >
> >
> > [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
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> # cd /pub
> # more beer
>
>
>
> [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
>
>
>
>
>
>
>
>
>


---------------------------------------------------------------------
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




 





 
  Jesus said: I'm the way, the truth and the life, anyone come to the God 
without me.
  Think about this.
  Rafig - ICQ: 271557403

                
---------------------------------
 Yahoo! Search
 Música para ver e ouvir: You're Beautiful, do James Blunt

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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