问题与换行有关,您可以更改正则表达式以匹配换行,或使用以下方法删除换行tr
:
user@machine:/tmp$ cat s.txt
<!--replace-->
<script src="1.js"></script>
<script src="2.js"></script>
<!--/replace-->
user@machine:/tmp$ tr "\n" " " < s.txt | sed "s#<\!--replace-->.*<\!--/replace-->#<script src="3.js"></script>#g"
<script src=3.js></script>
如果您不想删除换行符,您可以:
a) 尝试使用 SED 的解决方案,如此处所述:
如何告诉 sed “点匹配新行”
b) 使用 perl 或 python 替换多行正则表达式,使用s
修饰符,换行符将保持不变:
user@mmmm:/tmp$ cat s.txt
<!--replace-->
<script src="1.js"></script>
<script src="2.js"></script>
<!--/replace-->
Dummy content containing
newlines for test.
user@mmmm:/tmp$ perl -i -pe 'BEGIN{undef $/;} s#<\!--replace-->.*<\!--/replace-->#<script src="3.js"></script>#gsm' s.txt
user@mmmm:/tmp$ cat s.txt
<script src="3.js"></script>
Dummy content containing
newlines for test.