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]