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: Flavio Junior
Subject: Re: [shell-script] referenciar arquivo.
Date: Fri, 15 Sep 2006 21:52:55 -0300

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 <address@hidden> 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 <address@hidden> 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











reply via email to

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