كيف يمكنني تسجيل التغييرات التي أدخلت خلال في مكان التحرير في بيرل؟

StackOverflow https://stackoverflow.com/questions/611981

سؤال

ولقد كتابتها حتى 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

تحرير: أدرجت اسم الملف، والثابتة خط عرض عدد عندما يتم استخدام ملفات الإدخال متعددة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top