2

我编写了一个简单的 ksh 脚本,它调用 Perl 程序来查找和替换文件。传入的 arg 是主目录:

 perl -pi -e 's/find/replace/g' $1/*.html

它工作得很好。但是,我想将所有更改输出到日志文件。我已经尝试过管道和重定向,但无法让它工作。有任何想法吗?

谢谢,格伦

4

2 回答 2

8

像这样将所有更改发送到 STDERR:

perl -pi -e '$old = $_; s/find/replace/g and warn "${ARGV}[$.]: $old $_"; close ARGV if eof' $1/*.html

更新:固定美元。在多个文件上。

于 2009-03-04T19:23:28.083 回答
3

您可以打印到 STDERR 并将 STDERR 输出重定向到文件,如下所示:

perl -pi -e 'chomp($prev=$_);s/find/replace/g and print STDERR "$ARGV - $.: $prev -> $_"; close ARGV if eof' $1/*.html 2> logfile.txt

编辑:添加了文件名,并在使用多个输入文件时固定显示行号

于 2009-03-04T19:50:27.647 回答