如何在Perl单行中为每个替换打印一条消息?

时间:2010-10-19 20:05:49

标签: perl

我在bash脚本中使用以下Perl语法:

     perl -i –pe  'next if /^ *#/; s/(\b|\D)$ENV{OLD }(\b|\D)/$1$ENV{NEW }$2/'   file

我想找到文件中没有第一个“#”字符的旧单词,然后用新单词替换旧单词

我的问题:我想打印“用$ NEW替换$ OLD”每次perl用$ NEW替换$ OLD

以哪种方式?我们可以插入命令:print“用$ NEW替换$ OLD”;在Perl语法中?

请注意perl one-liner语法是我的bash脚本的一部分

2 个答案:

答案 0 :(得分:2)

perl -i –pe 'next if /^ *#/; s/(\b|\D)$ENV{OLD }(\b|\D)/$1$ENV{NEW }$2/ && warn "replaced $OLD with $NEW\n"' file

答案 1 :(得分:1)

  

perl -i -pe'next if / ^ *#/;   s /(\ b | \ D)$ ENV {OLD}(\ b | \ D)/ $ 1 $ ENV {NEW   } $ 2 /&& print STDERR“用$替换了$ OLD   $ NEW \ n“'file