Em Mon, 24 Feb 2003 15:58:36 -0300, Jorge Godoy <[EMAIL PROTECTED]>
escreveu:

> Marcio Merlone <[EMAIL PROTECTED]> writes:
> 
> > 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)
(...)
> Perl:
(...)
>         if (($linha != /^$/) or ($linha != /^#/)) {
>            $linha =~ s/$/ (Cod. $i)/;
>          $i++;
>         }

Tio,

Este teste n�o funcionou para mim. Tive que utilizar =~ para ele ignorar
linhas em branco e comentarios. No fim ficou assim:

#!/usr/bin/env perl
#
# Adiciona a string "(Cod. Num)" nos finais das linhas. Nao
# corresponde ao num. da linha. --- Ignora comentarios iniciados por
# '#' e linhas em branco.
#

use strict;

my $hc="/etc/postfix/header_checks";

open(REGRAS_BLOQUEIO, "< $hc") or
        die "Impossivel abrir o arquivo de entrada: $!\n";

open(NOVO_ARQUIVO, "> $hc.new") or
        die "Impossivel abrir o arquivo de saida: $!\n";


my $i = 1;
foreach my $linha (<REGRAS_BLOQUEIO>) {
        printf ".";
        unless (($linha =~ /^$/) or ($linha =~ /^#/)) {
                $linha =~ s/$/ (Cod. $i)/;
                $i++;
        }
        print NOVO_ARQUIVO $linha;
}

Mas ainda estou curioso de como fazer inline E no vi! Se algu�m se
habilitar! :))


--

    Marcio Merlone


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

Responder a