Wie kann ich Veränderungen während der in-place in Perl Bearbeitung gemacht aufnehmen?
Frage
Ich habe ein einfaches Skript KSH up, die ein Perl-Programm ruft Dateien zu suchen und ersetzen in. Die übergebene in arg ist das Home-Verzeichnis:
perl -pi -e 's/find/replace/g' $1/*.html
Es funktioniert großartig. Allerdings würde ich alle Änderungen zur Ausgabe in eine Protokolldatei mögen. Ich habe versucht, Rohrleitungen und Umleiten und nicht in der Lage gewesen, um es Arbeit zu bekommen. Irgendwelche Ideen?
Danke, Glenn
Lösung
So etwas wie dies alle Änderungen an STDERR an:
perl -pi -e '$old = $_; s/find/replace/g and warn "${ARGV}[$.]: $old $_"; close ARGV if eof' $1/*.html
Aktualisiert: Fest $. auf mehreren Dateien.
Andere Tipps
Sie können auf STDERR drucken und wie unten nur die STDERR Ausgabe in eine Datei umleiten:
perl -pi -e 'chomp($prev=$_);s/find/replace/g and print STDERR "$ARGV - $.: $prev -> $_"; close ARGV if eof' $1/*.html 2> logfile.txt
edit: hinzugefügt, um die Dateinamen und die Festnetznummer angezeigt, wenn mehrere Eingabedateien verwendet werden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow