我需要将隐藏的 HTML 输入标记插入到一堆 HTML 文件中的任何表单标记中。
我的想法是搜索任何实例
<form
如果找到,则在其下方插入一行,其中包含:
<input type="hidden" name="csrf_token" value="$csrf_token" />
解决这个问题的最佳方法是什么?我很接近
sed -e '/<form/a\<input type="hidden" name="csrf_token" value="$csrf_token"/>'
答案1
要在每个下面添加一些内容,<form
您必须添加&
以表明您想要保留捕获的序列(加上\n
您提到的您需要它):
$ find *.html | xargs sed -ie 's/<form/&\n\<input type="hidden" name="csrf_token" value="$csrf_token"\/>/g'
答案2
知道了。下面是它的实现方法:
find . -name \*.html | xargs sed -i '/<form/a\<input type="hidden" name="csrf_token" value="$csrf_token" />'
答案3
使用这个 perl 单行代码可以轻松实现这一点:
perl -i.bkp -pe 's|<form|<form\n<input type="hidden" name="csrf_token" value="$csrf_token" /> |' *.html
-i 用于就地编辑
.bkp 创建具有该扩展名的备份文件。