Considerando que não existe a string email no e-mail do
usuário , caso contrário é necessária uma pequena modificação

 cat texto
=== linha em branco ===
Nome: Nair
Sobrenome: Silveira
email: nsilve...@dom.com
email: nsilve...@hotmail.com
=== linha em branco ===
Nome: Carlos
Sobrenome: Martin
email: carlos.mar...@dom.com
email: cmarti...@walla.net
=== linha em branco ===
Nome: Lucia
Sobrenome: Andrade
email: luc...@dom.com
email: luci...@hotmail.com

[mira...@guitar ~]$ cat awk.cmd
BEGIN{FLAG=1;}
$0 !~ /email/ {print}
$0 ~ /email/ && FLAG == 1 {print;FLAG=0;next}
$0 ~ /email/ && FLAG == 0 {sub("email",
"email_alternativo");print;FLAG=1}

[mira...@guitar ~]$ awk -f awk.cmd texto
=== linha em branco ===
Nome: Nair
Sobrenome: Silveira
email: nsilve...@dom.com
email_alternativo: nsilve...@hotmail.com
=== linha em branco ===
Nome: Carlos
Sobrenome: Martin
email: carlos.mar...@dom.com
email_alternativo: cmarti...@walla.net
=== linha em branco ===
Nome: Lucia
Sobrenome: Andrade
email: luc...@dom.com
email_alternativo: luci...@hotmail.com



On Fri, 2008-12-12 at 00:15 -0200, Guilherme Gall wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Fiz o seguinte script em awk. Vê se ajuda:
> 
> $ cat script.awk
> BEGIN{
> RS=""
> FS="\n"
> OFS="\n"
> }
> 
> {
> sub(/email/, "email_alternativo", $4)
> print $0"\n"
> }
> 
> $ awk -f script.awk arquivo_original.txt
> Nome: Nair
> Sobrenome: Silveira
> email: nsilve...@dom.com
> email_alternativo: nsilve...@hotmail.com
> 
> Nome: Carlos
> Sobrenome: Martin
> email: carlos.mar...@dom.com
> email_alternativo: cmarti...@walla.net
> 
> Nome: Lucia
> Sobrenome: Andrade
> email: luc...@dom.com
> email_alternativo: luci...@hotmail.com
> 
> Não consegui manter as linhas em branco em seus lugares originais,
> perceba que a primeira linha foi apagada e que uma linha em branco
> extra foi adicionada no final da saída. Acredito que o segredo está no
> uso adequado da variável ORS, mas não consegui fazer funcionar e ainda
> tive que concatenar um \n no final de cada registro para colocar uma
> linha em branco entre cada um.
> 
> Se alguém mais experiente em awk puder dar uma idéia seria
> interessante.
> 
> Saudações,
> - --
> Guilherme Magalhães Gall (GMGall)
> GPG Public Key ID: 0F498058
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
> Comment: http://getfiregpg.org
> 
> iEYEARECAAYFAklByvoACgkQZV3qXg9JgFjf/ACdFdEM7fIqFm+EoOyRk4drztw7
> BqEAnR09iG+fXm/i1DzV7iWnmtu/0Zei
> =32AY
> -----END PGP SIGNATURE-----
> 
> 2008/12/11 Molinero <cybercro...@gmail.com>:
> > Pessoal,
> >
> > Gostaria de uma ajuda de vocês.
> > Preciso fazer um script que leia um arquivo e de 4 em 4 linhas deste
> > arquivo e altere uma parte desta linha.
> >
> > Ex.:
> > Arquivo_Original.txt
> > === linha em branco ===
> > Nome: Nair
> > Sobrenome: Silveira
> > email: nsilve...@dom.com
> > email: nsilve...@hotmail.com
> > === linha em branco ===
> > Nome: Carlos
> > Sobrenome: Martin
> > email: carlos.mar...@dom.com
> > email: cmarti...@walla.net
> > === linha em branco ===
> > Nome: Lucia
> > Sobrenome: Andrade
> > email: luc...@dom.com
> > email: luci...@hotmail.com
> >
> > Quero alterar o segundo "email" para "email_alternativo", ficando
> então:
> >
> > Arquivo_Novo.txt
> > === linha em branco ===
> > Nome: Nair
> > Sobrenome: Silveira
> > email: nsilve...@dom.com
> > email_alternativo: nsilve...@hotmail.com
> > === linha em branco ===
> > Nome: Carlos
> > Sobrenome: Martin
> > email: carlos.mar...@dom.com
> > email_alternativo: cmarti...@walla.net
> >
> > ... e por ai vai.
> >
> > Quebrei a cabeça e não consegui, por isso peço a ajuda de vcs.
> > Agradeço desde já !!!
> >
> >
> 
> 
> 
>  


------------------------------------

---------------------------------------------------------------------
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-unsubscr...@yahoogrupos.com.br
---------------------------------------------------------------------
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:
    shell-script-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a