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