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

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

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


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Alterar campo dentro do arquivo
Date: Fri, 2 Jul 2004 13:05:04 -0300

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


| -----Mensagem original-----
| De: lferreir1 [mailto:address@hidden]
| 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: 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]