我在 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 编码?如果不可能,是否有另一种方法可以得到这个结果也相对简单易读?