我试图使用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

09-18 09:00