Come posso registrare le modifiche apportate durante la modifica sul posto in Perl?
Domanda
Ho scritto un semplice ksh che chiama un programma Perl per trovare e sostituire nei file. L'arg passato è la directory home:
perl -pi -e 's/find/replace/g' $1/*.html
Funziona benissimo. Tuttavia, vorrei inviare tutte le modifiche a un file di registro. Ho provato a eseguire il piping e il reindirizzamento e non sono riuscito a farlo funzionare. Qualche idea?
Grazie, Glenn
Soluzione
Qualcosa del genere per inviare tutte le modifiche a STDERR:
perl -pi -e '$old = Qualcosa del genere per inviare tutte le modifiche a STDERR:
<*>
Aggiornato: fisso $. su più file.
; s/find/replace/g and warn "${ARGV}[$.]: $old Qualcosa del genere per inviare tutte le modifiche a STDERR:
<*>
Aggiornato: fisso $. su più file.
"; close ARGV if eof' $1/*.html
Aggiornato: fisso $. su più file.
Altri suggerimenti
Puoi stampare su STDERR e reindirizzare solo l'output STDERR su un file come di seguito:
perl -pi -e 'chomp($prev= Puoi stampare su STDERR e reindirizzare solo l'output STDERR su un file come di seguito:
<*>
modifica: aggiunto il nome del file e la visualizzazione del numero di linea fissa quando vengono utilizzati più file di input
);s/find/replace/g and print STDERR "$ARGV - $.: $prev -> Puoi stampare su STDERR e reindirizzare solo l'output STDERR su un file come di seguito:
<*>
modifica: aggiunto il nome del file e la visualizzazione del numero di linea fissa quando vengono utilizzati più file di input
"; close ARGV if eof' $1/*.html 2> logfile.txt
modifica: aggiunto il nome del file e la visualizzazione del numero di linea fissa quando vengono utilizzati più file di input