Com o sed voce pode fazer isso..
Usando "a" (append) ou "i" de insert, por exemplo:

[EMAIL PROTECTED]:~$ cat test.txt
abc
cba
ads
nada
adfa
adfadfa

[EMAIL PROTECTED]:~$ sed '/nada/i TESTANDO' test.txt
abc
cba
ads
TESTANDO
nada
adfa
adfadfa

[EMAIL PROTECTED]:~$ sed '/nada/a TESTANDO' test.txt
abc
cba
ads
nada
TESTANDO
adfa
adfadfa

[EMAIL PROTECTED]:~$ sed '3a TESTANDO' test.txt
abc
cba
ads
TESTANDO
nada
adfa
adfadfa

[EMAIL PROTECTED]:~$


Sorte!


Flávio do Carmo Junior


On 9/16/06, Rafig <[EMAIL PROTECTED]> wrote:
> 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 <[EMAIL PROTECTED]> 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: [email protected] [mailto:[EMAIL PROTECTED] Em nome de 
> > Tiago Barcellos Peczenyj
> > Enviada em: sexta-feira, 15 de setembro de 2006 16:59
> > Para: [email protected]
> > 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:
> > >
> > > [EMAIL PROTECTED] cat arquivo.txt
> > > xx000000000111111111122222
> > > xx123456789012345678901234
> > > 01
> > > 02
> > > 03
> > > 04
> > > 05
> > > 06
> > > 07
> > > 08
> > > 09
> > > 10
> > > 11
> > > 12
> > > 13
> > > 14
> > > 15            *
> > > 16
> > > 17
> > >
> > > [EMAIL PROTECTED] 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: [email protected] [mailto:[EMAIL PROTECTED] Em nome de 
> > > rafig38
> > > Enviada em: sexta-feira, 15 de setembro de 2006 15:16
> > > Para: [email protected]
> > > 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: [EMAIL PROTECTED]
> > > ---------------------------------------------------------------------
> > > 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: [EMAIL PROTECTED]
> > ---------------------------------------------------------------------
> > 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: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> 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]
>
>
>
> ---------------------------------------------------------------------
> 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: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> 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: [EMAIL PROTECTED]
---------------------------------------------------------------------
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

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a