Marcio Merlone <[EMAIL PROTECTED]> writes:

> Sernhores,
>
> Preciso numerar todas os finais linhas de um arquivo. Vi uma vez um
> exemplo disto com o vi mas n�o lembro onde nem como. Basicamente:
>
> /^Received: (baby|clobberer) \(/       REJECT
> /^Received:.*cyber/                         REJECT
>
> preciso transformar em
>
> /^Received: (baby|clobberer) \(/      REJECT (Cod. 1)
> /^Received:.*cyber/                         REJECT (Cod. 2)
>
> A finalidade � permitir que o usu�rio injustamente bloqueado em um
> header-check do postfix possa me dizer qual das regras o est�
> bloqueando. :)
>
> Algu�m lembra ou tem como fazer isto? Obrigado!

Perl:

----------------------------------------------------------------------
#!/usr/bin/env perl
#
# Adiciona a string "(Cod. n�mero)" nos finais das linhas. N�mero
# corresponde ao n�mero da linha. --- Ignora coment�rios iniciados por
# '#' e linhas em branco.
#
use strict;

open(REGRAS_BLOQUEIO, "< /usr/local/etc/postfix/header_checks") or
    die "Imposs�vel abrir o arquivo de entrada: $!\n";

open(NOVO_ARQUIVO, "> /usr/local/etc/postfix/header_checks.new") or
    die "Imposs�vel abrir o arquivo de sa�da: $!\n";


my $i = 1;
foreach my $linha (<REGRAS_BLOQUEIO>) {
        if (($linha != /^$/) or ($linha != /^#/)) {
           $linha =~ s/$/ (Cod. $i)/;
           $i++;
        }
        print NOVO_ARQUIVO $linha;
}
__END__
----------------------------------------------------------------------

Dados simples:

----------------------------------------------------------------------
[EMAIL PROTECTED] ~]# cat /usr/local/etc/postfix/header_checks
/[EMAIL PROTECTED]/  REJECT Virus
/[EMAIL PROTECTED]/   REJECT Mailing list operation
/[EMAIL PROTECTED]/   REJECT Mailing list operation
/[EMAIL PROTECTED]/   REJECT spam
[EMAIL PROTECTED] ~]# perl teste.pl
[EMAIL PROTECTED] ~]# cat /usr/local/etc/postfix/header_checks.new
/[EMAIL PROTECTED]/  REJECT Virus (Cod. 1)
/[EMAIL PROTECTED]/   REJECT Mailing list operation (Cod. 2)
/[EMAIL PROTECTED]/   REJECT Mailing list operation (Cod. 3)
/[EMAIL PROTECTED]/   REJECT spam (Cod. 4)
[EMAIL PROTECTED] ~]#
----------------------------------------------------------------------

Eu poderia ter feito a mudan�a inline, tamb�m ou diretamente da linha
de comandos, mas ficaria menos clara.

Adapte conforme as tuas necessidades... ;-)


Sds,
-- 
Godoy.   <[EMAIL PROTECTED]>

Assinantes em 24/02/2003: 2229
Mensagens recebidas desde 07/01/1999: 202353
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista: 
            mailto:[EMAIL PROTECTED]

Responder a