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
