使用 sed 替换
我试图以编程方式在一堆文件中将 替换为 ,但我的 sed 正则表达式的行为并不像我预期的那样。你能告诉我这是怎么回事吗?
我在这里的命令行上测试它:
$ sed -e 's/<\?/<\?php/g'
<?
<?php?<?php
d
<?phpd<?php
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web
技术交流群。
我试图以编程方式在一堆文件中将 替换为
,但我的 sed 正则表达式的行为并不像我预期的那样。你能告诉我这是怎么回事吗?
我在这里的命令行上测试它:
$ sed -e 's/<\?/<\?php/g'
<?
<?php?<?php
d
<?phpd<?php
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我认为你不需要 ?: 上的转义
I don't think you need the escapes on the ?:
您不需要在替换中转义反向引用。
在管道中,纠正双倍 php:
You don't need to escape the back reference in the replacement.
In a pipe, to correct for doubling the php:
您真的必须使用 sed,还是也可以使用 perl?
我使用负前瞻以避免在文件已经以正确字符开头的情况下生成
。
Do you really have to use sed, or can you use perl as well?
I am using a negative look-ahead to avoid generating
<?phpphp
in cases where the files already start with the correct characters.这也将跳过与
的匹配:
This will also skip matching with
<?=$variable
: