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

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

Re: [shell-script] duvida com sed


From: Luciano Machado Granella
Subject: Re: [shell-script] duvida com sed
Date: Thu, 21 Dec 2000 01:38:09 -0200

Maurício, seu script em perl se assemelhará com este :
#!/bin/perl -w

open (ENTRADA, "$ARGV[1]");
open (SAIDA, ">$ARGV[2]");

while (<ENTRADA>) {
 chomp $_;
 if ($_ == /^.*/) {    #capture uma nova linha, tratar.
  if ($_ !~ /@/) {   #linha não tem @
   print SAIDA "$_";
   print SAIDA "@araketu.dcc.ufba.br\n"  # \n indica nova linha
  }
  else { #linha tem @, apenas escreva no arquivo de saída
   print SAIDA "$_\n"
  }

 }
}

close ENTRADA;
close SAIDA;

exit 0;

# execute o script assim:
#perl -w script arquivo_entrada arquivo-saida
# OBS: talvez vc tenha que alterar os prints do while
# para que o seu arquvio de saída saia fique como você queira

Eu não testei este script, teste-o e faça as modificações necessária.
Espero que eu tenha ajudado.
    [ ]s,
                                        Luciano


Mauricio Vieira wrote:

> Alo lista,
> tenho uma duvida com um script que penso ser possivel ser feito
> apenas com sed (sou iniciante). tenho uma serie de listas do majordomo e
> quero acrescentar o @araketu.dcc.ufba.br em todos os nomes que nao tiverem
> o @ (ha mails @outracoisa.dominio e nao devem ser alterados, mas todos os
> nomes que nao tem o @ sao araketu.dcc.ufba.br)
> nao entendo muito bem como o sed faz para apagar o nome do arquivo ou nao sei
>  como posso substituir o nome no arquivo, entao fiz o seguinte:
>
> #!/bin/bash
>
> # Acerta.sh - script para adicionar o @araketu.dcc.ufba.br em todos os
> # logins de todas as listas que nao tiverem o @araketu.dcc.ufba.br
>
> # Por Mauricio B. C. Vieira - 2000dez19
>
> for I in $( ls -1 | grep -E -e 'info' -e 'config' | cut -f 1 -d . | sort \
> | uniq ); do
>   cp $I $I.acerta
>   for NOME in $( grep -v @ $I.acerta ); do
>         sed '/NOME/d' $I.acerta >> $I
>         sed 's/NOME/address@hidden/' $I.acerta >> $I
>   done
> done
>
> #fim
>
> e nao funcionou. como o sed pode substituir o texto no proprio arquivo,
> sem ter que redirecionar pro pipe? percebi (testando) que se manda
> redirecionar a saida pro proprio arquivo ele apaga (sed 'algumacoisa'
> arquivo > arquivo) o proprio arquivo.
> o motivo daquele pequeno comando no ls eh pq o majordomo tem os arquivos
> lista-alunos, lista-alunos.config e lista-alunos.info e quero apenas o
> lista-alunos. alguma sugestao? nao sei awk nem perl, mas sugestoes sao
> bem-vindas (ateh um incentivo pra estudar isto tbm).
>
> +
>    Mauricio Vieira
>
>                                                     +
>
>
> Inscrição:     address@hidden
>
> Sair da lista: address@hidden
>
> Banco Dados:   http://www.egroups.com/group/shell-script



reply via email to

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