【发布时间】:2012-08-30 12:19:55
【问题描述】:
我在 bash 脚本中使用以下 Perl oneliner 来捕获 pre 标签之间的多行文本,并添加标签内容的第二次迭代,该标签内容包含在不同的开始和结束字符串中:
new_start_string="NEWSTART"
new_end_string="NEWEND"
perl -i -pe "BEGIN{undef $/;} s/<pre>(.*?)<\/pre>/<pre>\$1<\/pre>${new_start_string}\$1${new_end_string}/smg" /path/to/file
它非常适合指定的任务。我知道我正在使用正则表达式解析 HTML,这并不理想,但是此文本文件的格式是一个已知因素,非常简单,在本地控制下并由本地规范完成,因此解析的情况很少见矫枉过正,我选择不通过解析来做到这一点。
使用相同的 oneliner,我如何对捕获值 $1 变量的第二次迭代进行 URL 编码?如果不可能,有没有另一种方法可以得到这个结果,也比较简单易读?
【问题讨论】:
-
您可以使用
/e修饰符并将您喜欢的任何代码放在替换部分中。