Perl プログラムを呼び出してファイルを検索および置換する単純な ksh のスクリプトを作成しました。渡された引数はホーム ディレクトリです。
perl -pi -e 's/find/replace/g' $1/*.html
それはうまくいきます。ただし、すべての変更をログ ファイルに出力したいと考えています。パイプとリダイレクトを試みましたが、うまくいきませんでした。何か案は?
ありがとう、グレン
すべての変更を STDERR に送信するには、次のようにします。
perl -pi -e '$old = $_; s/find/replace/g and warn "${ARGV}[$.]: $old $_"; close ARGV if eof' $1/*.html
更新: 固定 $. 複数のファイルで。
以下のように、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
編集:ファイル名を追加し、複数の入力ファイルが使用されている場合の行番号の表示を修正しました