我试图使用linux sed命令将path元素附加到.htaccess文件中的RewriteBase。
我试过这样的论点:
#current RewriteBase is "RewriteBase /mypath"
sed -ie 's/RewriteBase\(.*\)/RewriteBase \1\/add/g' .htaccess
结果是:
addriteBase /mypath
所以sed用最后一个字符串覆盖替换字符串的开头。
为什么?
另一个问题是,当RewriteBase仅为“/”时,如何防止有两个斜杠。
RewriteBase /
会变成
RewriteBase //add
但应该是
RewriteBase /add
有什么办法可以防止这种情况发生吗?如果没有,我可以运行第二个sed命令,将所有双斜杠替换为一个单斜杠。但也许有一个更优雅的方法来做到这一点。
我很感激你的帮助。
最佳答案
你看到的是sed在结果中包含\r
,使它看起来好像文本被粘在了开头。在通过sed之前,先将文件推到dos2unix
中。
至于第二部分,您需要捕获组外的可选斜线,然后放入/add
。