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

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

Re: [shell-script] Alterar campo dentro do arquivo


From: lferreir1
Subject: Re: [shell-script] Alterar campo dentro do arquivo
Date: Fri, 02 Jul 2004 16:56:06 -0000
User-agent: eGroups-EW/0.82

Show de bola!!!! Mais uma que aprendemos.
Julio, Aurélio, Rodolfo e Cia., agradeço a atenção que tiveram sobre 
a minha dúvida.

Até a próxima dúvida,
Luiz

--- Em address@hidden, Julio Cezar Neves - 
DATAPREVRJ <julio.neves@p...> escreveu
> Luiz,
> repare que na msg anterior escrevi:
> 
> | > 1,$s/cadeia_antiga/cadeia_nova/[g] sendo que cadeia_antiga e 
> | cadeia_nova
> | > podem ser expressões regulares.
> 
> Assim sendo, repare este arquivo no vi (a numeração à frente é pq 
uso o set
> number ligado):
> 
>       1 ATENCAO, O TEXTO ABAIXO NAO EH TREINAMENTO,
>       2 EH UMA LAVAGEM CEREBRAL!!!
>       3 O Shell alem de analisar cada dado entrado a partir do 
prompt do
> UNIX,
>       4 interfaceando com os usuarios, tem tambem as seguintes 
atribuicoes:
>       5 Interpretador de comandos;
>       6 Controle do ambiente UNIX;
>       7 Redirecionamento de entrada e saida;
>       8 Substituicao de nomes de arquivos;
>       9 Concatenacao de pipe;
>      10 Execucao de programas;
>      11 Poderosa linguagem de programacao.
> 
> Agora vou aplicar a seguinte exprssão regular (parecida com a que 
falamos):
> 
> :1,$s/\(.\{10\}\).\{6\}/\1ENTRE A 10 E A 16 INSERI ISSO/
> 
> Olhe o resultado final:
> 
>       1 ATENCAO, OENTRE A 10 E A 16 INSERI ISSO ABAIXO NAO EH 
TREINAMENTO,
>       2 EH UMA LAVENTRE A 10 E A 16 INSERI ISSOEREBRAL!!!
>       3 O Shell alENTRE A 10 E A 16 INSERI ISSOanalisar cada dado 
entrado a
> partir do prompt do UNIX,
>       4 interfaceaENTRE A 10 E A 16 INSERI ISSOm os usuarios, tem 
tambem as
> seguintes atribuicoes:
>       5 InterpretaENTRE A 10 E A 16 INSERI ISSO comandos;
>       6 Controle dENTRE A 10 E A 16 INSERI ISSOente UNIX;
>       7 RedirecionENTRE A 10 E A 16 INSERI ISSO de entrada e saida;
>       8 SubstituicENTRE A 10 E A 16 INSERI ISSOnomes de arquivos;
>       9 ConcatenacENTRE A 10 E A 16 INSERI ISSOpipe;
>      10 Execucao dENTRE A 10 E A 16 INSERI ISSOramas;
>      11 Poderosa lENTRE A 10 E A 16 INSERI ISSOem de programacao.
> 
> [ ]s,
> Julio Cezar Neves
> - Gerente do Programa de Software Livre -
> Tel:+55 21 2528-7070 / +55 21 8112-9988
> Fax: +55 21 2528-7646
> mailto:julio.neves@p...
> 
> 
> | -----Mensagem original-----
> | De: lferreir1 [mailto:lferreir@e...]
> | Enviada em: sexta-feira, 2 de julho de 2004 12:12
> | Para: address@hidden
> | Assunto: Re: [shell-script] Alterar campo dentro do arquivo
> | 
> | 
> | Corretíssimo!. Só que se no arquivo a ser alterado tiver três 
datas 
> | em cada registro, e se eu quizer alterar somente a segunda data, 
o 
> | comando abaixo não serve. Tem algum macete para este caso? Ou 
somente 
> | com o sed e awk?
> | 
> | --- Em address@hidden, Julio Cezar Neves - 
> | DATAPREVRJ <julio.neves@p...> escreveu
> | > No vi faça:
> | > 1,$s/cadeia_antiga/cadeia_nova/[g] sendo que cadeia_antiga e 
> | cadeia_nova
> | > podem ser expressões regulares. O g, que é opcional e por isso 
usei 
> | entre
> | > [], é usado qdo existir mais de uma ocorréncia na mesma linha e 
vc 
> | desejar
> | > substituir todas as ocorrências (exatamente como no sed).
> | > 
> | > [ ]s,
> | > Julio Cezar Neves
> | > - Gerente do Programa de Software Livre -
> | > Tel:+55 21 2528-7070 / +55 21 8112-9988
> | > Fax: +55 21 2528-7646
> | > mailto:julio.neves@p...
> | > 
> | > 
> | > | -----Mensagem original-----
> | > | De: lferreir1 [mailto:lferreir@e...]
> | > | Enviada em: sexta-feira, 2 de julho de 2004 10:32
> | > | Para: address@hidden
> | > | Assunto: Re: RES: RES: RES: [shell-script] Alterar campo 
dentro do
> | > | arquivo
> | > | 
> | > | 
> | > | ae Júlio, Qdo vc mencionou o vi, que tb poderia ter as mesmas 
> | > | expressões, fiquei imaginando como seria o comando dentro 
deste 
> | > | editor. :1,$ (ou :%). Só num sei, com o "s" dizer a ele que 
quero 
> | > | alterar somente o campo em questão.
> | > | 
> | > | Estou finalizando um script para esta finalidade, sendo os 
campos 
> | a 
> | > | serem alteradas )com opção fixos ou variáveis), através das 
dicas 
> | que 
> | > | vcs me deram.
> | > | 
> | > | Qdo. pronto, mostrarei ao grupo para validarem, ou 
melhorarem, OK?
> | > | 
> | > | Gratos,
> | > | Luiz
> | > | 
> | > | 
> | > | --- Em address@hidden, Julio Cezar Neves - 
> | > | DATAPREVRJ <julio.neves@p...> escreveu
> | > | > Fala Luiz,
> | > | > o que eu disse é que o vi, grep, sed e outros são 
orientados a 
> | > | expressões
> | > | > regulares, desta forma vc pode usar no vi as mesmas exp reg 
que 
> | vc 
> | > | usa no
> | > | > sed, só que no caso que discutimos, a exp reg deveria ser 
> | precedida 
> | > | de um
> | > | > 1,$ que significa do primeiro ao último registro do arquivo 
que 
> | > | esta sendo
> | > | > editado.
> | > | > 
> | > | > [ ]s,
> | > | > Julio Cezar Neves
> | > | > - Gerente do Programa de Software Livre -
> | > | > Tel:+55 21 2528-7070 / +55 21 8112-9988
> | > | > Fax: +55 21 2528-7646
> | > | > mailto:julio.neves@p...
> | > | > 
> | > | > 
> | > | > | -----Mensagem original-----
> | > | > | De: lferreir1 [mailto:lferreir@e...]
> | > | > | Enviada em: quinta-feira, 1 de julho de 2004 17:04
> | > | > | Para: address@hidden
> | > | > | Assunto: Re: RES: RES: [shell-script] Alterar campo 
dentro do 
> | > | arquivo
> | > | > | 
> | > | > | 
> | > | > | Júlio, no VI??? Estou dando aula de vi aqui na empresa( o 
> | básico, 
> | > | é 
> | > | > | claro) e nem me passa pela cabeça como faço estas 
alterações 
> | > | neste 
> | > | > | editor...
> | > | > | Hoje por exemplo a aula foi sobre "abbreviate" e "map"
> | > | > | 
> | > | > | Pode mandar o segredo pra gente?
> | > | > | 
> | > | > | Luiz
> | > | > | --- Em address@hidden, Julio Cezar 
Neves - 
> | > | > | DATAPREVRJ <julio.neves@p...> escreveu
> | > | > | > Ô Aurélio, faltou explicar ao Luiz que a blasfêmia é 
dupla. 
> | > | Será 
> | > | > | que o
> | > | > | > editor ao qual ele se refere é o M$Word (que tb usa ERs 
> | leves)? 
> | > | Pq 
> | > | > | está
> | > | > | > mesma expressão serve para o vi. :)
> | > | > | > 
> | > | > | > [ ]s,
> | > | > | > Julio Cezar Neves
> | > | > | > - Gerente do Programa de Software Livre -
> | > | > | > Tel:+55 21 2528-7070 / +55 21 8112-9988
> | > | > | > Fax: +55 21 2528-7646
> | > | > | > mailto:julio.neves@p...
> | > | > | > 
> | > | > | > 
> | > | > | > | -----Mensagem original-----
> | > | > | > | De: Aurelio Marinho Jargas [mailto:aureliojargas@y...]
> | > | > | > | Enviada em: quinta-feira, 1 de julho de 2004 14:26
> | > | > | > | Para: address@hidden
> | > | > | > | Assunto: Re: RES: [shell-script] Alterar campo dentro 
do 
> | > | arquivo
> | > | > | > | 
> | > | > | > | 
> | > | > | > | oi luiz,
> | > | > | > | 
> | > | > | > | --- lferreir1 <lferreir@e...> escreveu: 
> | > | > | > | 
> | > | > | > | 
> | > | > | > | > Não posso alterar via editor, ou pelo sed, pois o 
meu 
> | > | receio é 
> | > | > | que 
> | > | > | > | > possa haver o mesmo numeral em outro campo.
> | > | > | > | 
> | > | > | > | ca-ca-ca-como não pode usar o sed? BLASFÊMIA!!!  :)
> | > | > | > | 
> | > | > | > | 
> | > | > | > | > Como eu sei que no campo 55 até 60 somente existe 
> | 010704, 
> | > | quero 
> | > | > | > | > alterar para 300604. Só agora eu lembrei que este 
> | arquivo 
> | > | > | contém 
> | > | > | > | > header e trailler.
> | > | > | > | 
> | > | > | > |      sed 's/^\(.\{54\}\)010704/\1300604/'
> | > | > | > | ou
> | > | > | > |      sed -r 's/^(.{54})010704/\1300604/'
> | > | > | > | 
> | > | > | > | o .{54} representa os primeiros 54 chars da linha, 
que 
> | estao
> | > | > | > | dentro de um grupo () e são referenciados depois com 
o 
> | \1, 
> | > | então
> | > | > | > | não são alterados. depois segue o numero antigo 
trocado 
> | pelo
> | > | > | > | novo.
> | > | > | > | 
> | > | > | > | era wilson?
> | > | > | > | 
> | > | > | > | falou
> | > | > | > | 
> | > | > | > | =====
> | > | > | > | -- 
> | > | > | > | Aurelio Marinho Jargas, Curitiba, Conectiva
> | > | > | > | A odisseia verde no FISL http://aurelio.net/curso/fisl
> | > | > | > | 
> | > | > | > | 
> | > | > | 
> | > | 
> | 
______________________________________________________________________
> | > | > | > | 
> | > | > | > | Participe da pesquisa global sobre o Yahoo! Mail: 
> | > | > | > | http://br.surveys.yahoo.com/global_mail_survey_br
> | > | > | > | 
> | > | > | > | 
> | > | > | > | ------------------------------------------------------
----
> | ----
> | > | ----
> | > | > | ---
> | > | > | > | 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: shell-script-
address@hidden
> | > | > | > | ------------------------------------------------------
----
> | ----
> | > | ----
> | > | > | ---
> | > | > | > | Esta lista é moderada de acordo com o previsto em 
> | > | > | > http://www.listas-discussao.cjb.net
> | > | > | > --------------------------------------------------------
----
> | ----
> | > | ----
> | > | > | -
> | > | > | >  
> | > | > | > 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
> | > | > ------------------------------------------------------------
----
> | ----
> | > | -
> | > | >  
> | > | > 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
> | > ----------------------------------------------------------------
----
> | -
> | >  
> | > 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
> --------------------------------------------------------------------
-
>  
> Links do Yahoo! Grupos


reply via email to

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